我正在为客户端实现IdentityServer4。在这里,我在 profileService 中生成和设置索赔时感到有些困惑。
方案:
1(用户可以属于多个公司。
2(用户可以在一家公司中扮演一个角色。
3(用户可以在不同的公司中具有不同的角色。
例如。用户=>爱丽丝属于公司和公司。
a(爱丽丝在Companyx中具有"管理员"的角色
b(爱丽丝在公司中具有"用户"
问题:设定主张的最佳方法是什么?在客户方面。我可以确定哪个用户角色属于哪个公司。如果我像
单独设置索赔new Claim("name", "Alice"),
new Claim("Role","Admin"),
new Claim("Role","Cat"),
new Claim("Comp","1"),
new Claim("Comp","2"),
另一种方法可能是设置诸如
之类的主张。new Claim("name", "Alice"),
new Claim("Company_Role","1_Admin"),
new Claim("Company_Role","2_Cat"),
我不确定这是最好的方法。谁能建议我。?
以这种方式发出索赔的弊端:
- 如果权限(角色(更改,则代币中的索赔值不会自动更新。
- 每个索赔都会添加到一个令牌中,该令牌是在每个请求中发送的。这将增加请求的长度。
- 如果您有多个系统,则角色值可能具有不同的含义。
记住:主张代表用户(身份(,而不是允许他/她进入。理想情况下,您将要求API的权限。
如果您决定使用此解决方案,则应尝试尽可能最大程度地减少发行的索赔。像Company_roleX
:ClaimValueX