我有一个使用ASP.NET Identity和Identity Server 4的ASP.NET Core项目,遵循他们的文档中描述的指南。
我们在一些标准声明中添加了一个自定义声明:
public static IEnumerable<IdentityResource> GetIdentityResources()
{
yield return new IdentityResources.OpenId();
yield return new IdentityResources.Email();
yield return new IdentityResources.Profile();
yield return new IdentityResource
{
// Our custom values...
};
}
StartUp.ConfigureServices
方法声明了我们的ProfileService
:
services.AddIdentityServer()
.AddStudyoSigningCredential()
// Stuff removed for brievety
.AddAspNetIdentity<ApplicationUser>()
.AddProfileService<ProfileService>();
除userinfo
端点返回的声明外,一切正常。它只包含我们的自定义声明和通常的sub
声明。我们的ProfileService
被正确调用,context.RequestedClaimTypes
属性仅包含我们的自定义声明。
如果我们注释掉AddProfileService
行,则userinfo
端点会正确返回sub
,prefered_username
,name
和email
等属性。
我是否正确地假设添加我们的ProfileService
不应该干扰默认的已知声明?我们是否必须从服务中填充更多的声明?