Я пробовал демонстрационный проект IdentityServer4, и я добавляю претензии пользователей к ProfileDataRequestContext.IssuedClaims
в версии IProfileService
. Одна вещь, которую я заметил, это то, что есть коллекция context.RequestedClaimTypes
, которая всегда пуста в любых вариантах конфигурации ресурсов/идентичности/области, которые я пробовал. При каких условиях у этой коллекции есть данные?Когда параметр ProfileDataRequestContext.RequestedClaimTypes не пуст?
5
A
ответ
-2
Ответ: https://github.com/IdentityServer/IdentityServer4/issues/1067
Всякий раз, когда вы запрашиваете объем, который связанные претензии.
-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
будет содержать эти требования запроса, на ваш идентификатор сервера, чтобы выполнить, как вы считаете нужным.