【发布时间】:2020-04-21 00:57:54
【问题描述】:
我创建了多个声明,这些声明位于 AspNetUserClaims 表中以获取身份,并将它们分配给我的用户 ID。
我目前正在尝试将这些内容纳入我在客户端应用程序中收到的声明列表中。
通过将“角色”范围添加到我的客户端身份设置,然后还在身份配置中(使用 EF 数据库格式又名 ConfigurationDbContext)在IdentityResources 表链接到称为“角色”的身份声明。
这按预期工作。但是,我没有通过我创建的任何 UserClaims 获得,我需要创建另一个特定范围吗?
这是我的客户端配置:
services.AddAuthentication(options =>
{
options.DefaultScheme = "cookie";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("cookie")
.AddOpenIdConnect("oidc", options =>
{
options.Authority = "https://localhost:44335/";
options.ClientId = "openIdConnectClient";
options.SignInScheme = "cookie";
options.ResponseType = "id_token";
options.GetClaimsFromUserInfoEndpoint = true;
options.Scope.Add("openid profile roles all_claims");
});
services.AddAuthorization();
这就是我检查用户声明的方式:
var claims = ((ClaimsIdentity)User.Identity).Claims;
它返回所有角色和配置文件声明(例如,preferred_username),而不是在 AspNetUserClaims 表中指定的那些。
对于我的客户,我还将属性 [AlwaysIncludeUserClaimsInIdToken] 设置为 true,但没有成功。
有人知道我在通过用户声明时缺少什么吗?
【问题讨论】:
标签: c# asp.net-identity identityserver4