我正在尝试IdentityServer4演示项目,并将用户声明添加到ProfileDataRequestContext.IssuedClaims
实现中的IProfileService
中。我注意到的一件事是,存在一个context.RequestedClaimTypes
集合,在我尝试过的任何资源/标识/范围配置变体中,该集合始终为空。在什么条件下该集合具有数据?
最佳答案
如果在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
将包含这些请求声明,以使Identity Server满足您的要求。