无法在MongoDB中设置IdentityServer4 Client属性Claim

时间:2018-09-19 07:30:34

标签: asp.net identityserver4 core

我想用它向MongoDB Collection $page->drawImage($image, $feed, $this->y-80, $feed+70, $this->y); 插入新客户端:

Client

但是我明白了:

clientB MongoDB raw data

如您所见,无法设置属性 new Client { ClientId = "clientB", // 没有交互性用户,使用 clientid/secret 实现认证。 AllowedGrantTypes = GrantTypes.ClientCredentials, // 用于认证的密码 ClientSecrets = { new Secret("secretB".Sha256()) }, // 客户端有权访问的范围(Scopes) AllowedScopes = { "api1" }, Claims=new List<Claim>(){ new Claim( JwtClaimTypes.Role,"superadmin") } } ,为什么? 谢谢!

1 个答案:

答案 0 :(得分:0)

IdentityServer返回了Identity令牌,但不包括声明。 IdentityServer在身份令牌中不包括身份声明(子对象除外),除非您特别要求(不推荐) 即像这样...

new Client {
    ClientId = "myclient",
    AlwaysIncludeUserClaimsInIdToken = true,    //not a good idea
...

有关此主题的一些额外信息。默认情况下,IdentityServer在身份令牌中不包含身份声明。通过将客户端配置上的AlwaysIncludeUserClaimsInIdToken设置设置为true,可以允许它。但是不建议这样做。初始身份令牌是通过表单发布或URI通过前端通道通信从授权端点返回的。如果通过URI返回并且令牌太大,则可能会遇到URI长度限制,该限制仍然取决于浏览器。大多数现代浏览器的长URI都没有问题,但是Internet Explorer等较旧的浏览器可能会出现问题。这可能与您无关,也可能与您无关。看起来我的项目与您的项目相似。祝你好运。