0

Ich habe eine funktionierende Identity Server-Anwendung, und ich richte es ein, um mit Azure AD zu arbeiten. Ich habe meine Azure Ad App-Registrierung und kann mich ordnungsgemäß damit authentifizieren.Identity Server 3 AzureAd Ansprüche, die nicht zurückgegeben werden

Mit Blick auf this und versuchen, etwas ähnliches zu tun, um das 3rd-Party-Benutzer-IDs mit einem Benutzer zugeordnet speichern, aber ich bin nicht immer die sub oder nameIdentifier Ansprüche von AAD zurück.

Muss ich diese irgendwie von AzureAD anfordern? - Ihre Dokumente scheinen zu sagen, dass der "sub" -Anspruch zurückgegeben wird (oder zumindest zurückgegeben werden kann): https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-token-and-claims#_subject. This Artikel scheint zu sagen, dass sub nicht zurückgegeben wird, aber es ist für Multi-Tenant-Anwendungen, so dass ich nicht sicher bin, ob das relevant ist.

Ich bin sicher, ich vermisse etwas Einfaches, aber kann nichts relevantes auf Google finden.

Cheers, Alex

Antwort

0

Der Artikel Work with claims-based identities zu alt ist und diese Azure AD token reference Artikel sollte von Azure AD ausgegeben über die Token Ansprüche im Token richtig sein.

Basierend auf dem Test, ich konnte den sub Anspruch von Azure AD und es auch durch die IdentityServer3 wie Abbildung erhält unten ausgegeben: enter image description here

Hier ist der Code, den ich für Ihre Referenz für die IdentityServer3 configed:

var webApp = WebApp.Start("https://localhost:44333", app => 
{ 
    app.UseIdentityServer(new IdentityServerOptions 
    { 
     SiteName = "NDC Demo", 
     SigningCertificate = cert, 
     Factory = factory, 
     AuthenticationOptions = new AuthenticationOptions 
     { 
      IdentityProviders = ConfigureAdditionalIdentityProviders, 
      EnableAutoCallbackForFederatedSignout = true 
     } 
    }); 
}); 

public static void ConfigureAdditionalIdentityProviders(IAppBuilder app, string signInAsType) 
{ 
    app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions 
    { 
     AuthenticationType = "aad", 
     Caption = "Azure AD", 
     SignInAsAuthenticationType = signInAsType, 

     Authority = "https://login.microsoftonline.com/{tenantId}", 
     ClientId = "{clientIdFromAzurePortal}", 
     RedirectUri = "{redirectUri}", 
    }); 
} 

Wenn Sie das Problem weiterhin haben, möchten Sie die Anfrage an Azure AD weitergeben, die Sie mit Fiddler erfassen können.

+0

Danke @ fie-xue-msft. Meine Fiddler-Spur ist die gleiche wie deine. Wie erhalten Sie das rohe Antwort-Token von AAD? Vielleicht muss ich einige spezielle Bereiche hinzufügen, um es zurück zu bekommen? Wird der Subject-Anspruch im Rahmen der IDS-Methode "AuthenticateExternalAsync" zurückgegeben? Diese Antwort (http://stackoverflow.com/questions/32510679/getting-users-token-subject-identifier-sub-from-within-azure-ad) besagt, dass ich "oid" anstatt "sub" betrachten sollte, aber die Frage ist ein Jahr alt. – Alex

+0

Als der Code in dem Post interagieren die IdentityServer3 Azure AD mit Open ID-Verbindungsprotokoll. Um einzugrenzen, ob dieses Problem von Azure AD oder Identity Server3 verursacht wurde, empfehle ich, die id_token-Rückgabe von Azure AD von dieser [Website] (https://jwt.io/) zu dekodieren. –

+0

Und soweit ich weiß, ist das einzige 'sub' der Stand Claim, der von der Open ID Verbindung unterstützt wird (siehe [hier] (http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims)). –

Verwandte Themen