2014-12-03 10 views
7

Tentativo di utilizzare thinctecture identityserver v3 come una semplice v per più applicazioni mvc.
Sono in grado di esaminare le applicazioni di esempio fornite e la corsa va bene, ma tutte utilizzano identityserver incorporato. Ho bisogno che il server dell'identità sia un'applicazione separata in modo da poterla usare come st per diverse app. Quando cerco di eseguire il server di identità e connettere l'applicazione mvc di esempio a esso sembra che manchi qualcosa.thinktecture identityserver v3

L'applicazione di esempio utilizza MVC katana

app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions... 

ma io non sto solo capire come config correttamente per il servizio esterno app. La mia ipotesi è che non sto usando l'endpoint giusto.

Ecco la configurazione del mio relying party come mvc. Qui ho intatto l'ultima versione di v3: : 44333

Nell'app mvc ogni volta che provo a navigare verso una vista che richiede l'autorizzazione ottengo l'eccezione.

dello stack:

[HttpRequestException: Response status code does not indicate success: 404 (Not Found).] 
    System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode() +87960 
    Microsoft.IdentityModel.Protocols.<GetDocumentAsync>d__0.MoveNext() +496 

[IOException: Unable to get document from: https://localhost:44333/.well-known/openid-configuration] 
    Microsoft.IdentityModel.Protocols.<GetDocumentAsync>d__0.MoveNext() +830 
    System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93 
    System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52 
    System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +24 
    Microsoft.IdentityModel.Protocols.<GetAsync>d__0.MoveNext() +512 
    System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93 
    System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52 
    System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +24 
    Microsoft.IdentityModel.Protocols.<GetConfigurationAsync>d__3.MoveNext() +1332 

qui è la configurazione di autenticazione completa in app MVC.

app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions 
{ 
    //Authority = "https://localhost:44319/identity", 
    Authority = "https://localhost:44333", 
    ClientId = "mvc", 
    Scope = "openid profile roles", 
    RedirectUri = "https://localhost:44319/", 

    SignInAsAuthenticationType = "Cookies", 
    UseTokenLifetime = false, 

    Notifications = new OpenIdConnectAuthenticationNotifications 
    { 
     SecurityTokenValidated = async n => 
      { 
       var id = n.AuthenticationTicket.Identity; 

       // we want to keep first name, last name, subject and roles 
       var givenName = id.FindFirst(Constants.ClaimTypes.GivenName); 
       var familyName = id.FindFirst(Constants.ClaimTypes.FamilyName); 
       var sub = id.FindFirst(Constants.ClaimTypes.Subject); 
       var roles = id.FindAll(Constants.ClaimTypes.Role); 

       // create new identity and set name and role claim type 
       var nid = new ClaimsIdentity(
        id.AuthenticationType, 
        Constants.ClaimTypes.GivenName, 
        Constants.ClaimTypes.Role); 

       nid.AddClaim(givenName); 
       nid.AddClaim(familyName); 
       nid.AddClaim(sub); 
       nid.AddClaims(roles); 

       // keep the id_token for logout 
       nid.AddClaim(new Claim("id_token", n.ProtocolMessage.IdToken)); 

       // add some other app specific claim 
       nid.AddClaim(new Claim("app_specific", "some data")); 

       n.AuthenticationTicket = new AuthenticationTicket(
        nid, 
        n.AuthenticationTicket.Properties); 
      }, 
     RedirectToIdentityProvider = async n => 
      { 
       if (n.ProtocolMessage.RequestType == OpenIdConnectRequestType.LogoutRequest) 
       { 
        var idTokenHint = n.OwinContext.Authentication.User.FindFirst("id_token"); 

        if (idTokenHint != null) 
        { 
         n.ProtocolMessage.IdTokenHint = idTokenHint.Value; 
        } 
       } 
      } 
    } 
}); 
+0

Beh ho avuto un po 'più lontano, ma ancora apprezzerebbe una guida per la mia stupidità se qualcuno è disposto a offrire. Cambiando l'autorità e aggiungendo il MeadataAddress alla configurazione di mvc stavo per farlo funzionare. Authority = "https://idsrv3.com", MetadataAddress = "https: // localhost: 44333/core/.well-known/openid-configuration", – Aaron792000

+0

potresti aggiungere il contenuto del file Startup.cs che hai usato configurare IdentityServerv3? Ho anche creato un tutorial per configurare IdSrv3, lì hai la configurazione di Idsrv e anche un'app Mvc che richiedeva alcune risorse pubbliche dopo che l'utente ha dato il consenso: [collegamento al tutorial] (http://cedric-dumont.com/tutorials/ identityserver-v3-membershipreboot-angularjs-webapi-2-and-mvc-mix-it-introduction /) –

+0

Incoraggio con questo problema, l'aggiornamento della pagina è stato risolto. Sembra che il sito STS non risponda un po 'di tempo. –

risposta

0

tuo punto finale manca il /identity alla fine