2017-02-08 1 views
5

Ich probiere das IdentityServer4-Demo-Projekt aus und füge Benutzeransprüche zu ProfileDataRequestContext.IssuedClaims in IProfileService Implementierung hinzu. Eine Sache, die ich bemerkt habe, ist, dass es eine context.RequestedClaimTypes Sammlung gibt, die immer leer ist in jeder Konfiguration von Ressourcen/Identität/Umfang, die ich ausprobiert habe. Unter welchen Bedingungen verfügt diese Sammlung über Daten?Wann ist ProfileDataRequestContext.RequestedClaimTypes nicht leer?

Antwort

-1

Ich habe herausgefunden, dass es, wenn Sie client.GetClaimsFromUserInfoEndpoint = true setzen und zusätzliche Roundtrip zu /connect/userinfo Endpunkt gemacht wird und die Anfrage Wert "sub" angefordert hat.

7

Wenn Sie in der Definition ApiResourcesUserClaims definieren, werden diese in context.RequestClaimTypes eingetragen. Zum Beispiel:

new ApiResource 
{ 
    Name = "TestAPI", 
    ApiSecrets = { new Secret("secret".Sha256()) }, 
    UserClaims = { 
    JwtClaimTypes.Email, 
    JwtClaimTypes.EmailVerified, 
    JwtClaimTypes.PhoneNumber, 
    JwtClaimTypes.PhoneNumberVerified, 
    JwtClaimTypes.GivenName, 
    JwtClaimTypes.FamilyName, 
    JwtClaimTypes.PreferredUserName 
        }, 
    Description = "Test API", 
    DisplayName = "Test API", 
    Enabled = true, 
    Scopes = { new Scope("testApiScore) } 
} 

Dann wird Ihr ProfileDataRequestContext.RequestClaimTypes wird diese Anfrage Ansprüche enthalten, für Ihren Server Identität zu erfüllen, wie Sie für richtig halten.