2017-02-08 10 views
5

Я пробовал демонстрационный проект IdentityServer4, и я добавляю претензии пользователей к ProfileDataRequestContext.IssuedClaims в версии IProfileService. Одна вещь, которую я заметил, это то, что есть коллекция context.RequestedClaimTypes, которая всегда пуста в любых вариантах конфигурации ресурсов/идентичности/области, которые я пробовал. При каких условиях у этой коллекции есть данные?Когда параметр ProfileDataRequestContext.RequestedClaimTypes не пуст?

ответ

-1

Я выяснил, что это, если вы установили client.GetClaimsFromUserInfoEndpoint = true, и дополнительная обратная связь сделана до конечной точки /connect/userinfo, и запрос запросил значение «sub».

7

Если в определении вашего ApiResources вы определяете UserClaims, они будут заполнены в context.RequestClaimTypes. Например:

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) } 
} 

Тогда ваш ProfileDataRequestContext.RequestClaimTypes будет содержать эти требования запроса, на ваш идентификатор сервера, чтобы выполнить, как вы считаете нужным.