ProfileDataRequestContext.RequestedClaimTypes 什么时候不为空?
When is ProfileDataRequestContext.RequestedClaimTypes not empty?
我正在试用 IdentityServer4 演示项目,我正在 IProfileService
实施中向 ProfileDataRequestContext.IssuedClaims
添加用户声明。我注意到的一件事是有一个 context.RequestedClaimTypes
集合,在我尝试过的任何 resource/identity/scope 配置变体中它总是空的。这个集合在什么情况下有数据?
我发现如果您设置 client.GetClaimsFromUserInfoEndpoint = true
并且对 /connect/userinfo
端点进行额外的往返并且请求请求值“sub
”。
如果您在 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
将包含这些请求声明,以便您的身份服务器实现您认为合适的方式。
答案:https://github.com/IdentityServer/IdentityServer4/issues/1067
Whenever you request a scope that has associated claims.
我正在试用 IdentityServer4 演示项目,我正在 IProfileService
实施中向 ProfileDataRequestContext.IssuedClaims
添加用户声明。我注意到的一件事是有一个 context.RequestedClaimTypes
集合,在我尝试过的任何 resource/identity/scope 配置变体中它总是空的。这个集合在什么情况下有数据?
我发现如果您设置 client.GetClaimsFromUserInfoEndpoint = true
并且对 /connect/userinfo
端点进行额外的往返并且请求请求值“sub
”。
如果您在 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
将包含这些请求声明,以便您的身份服务器实现您认为合适的方式。
答案:https://github.com/IdentityServer/IdentityServer4/issues/1067
Whenever you request a scope that has associated claims.