IdentityServer4多个声明生成(特定方案)

时间:2017-04-18 07:38:36

标签: asp.net-identity claims-based-identity identityserver4 thinktecture-ident-server

我正在为客户端实现IdentityServer4。在 ProfileService 中,我对生成和设置声明感到困惑。

情境:

1)用户可以属于多家公司。

2)用户可以在一家公司中拥有一个角色。

3)用户可以在不同的公司中担任不同的角色。

E.g。 用户=> Alice属于companyX和companyY。

a)Alice在companyX中有“Admin”角色

b)Alice在CompanyY中具有“用户”角色

问题: 设置索赔的最佳方式是什么?如何在客户端。我可以确定哪个用户角色属于哪个companyid。如果我单独设置索赔,如

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"),

我不确定这是否是最佳方法。 有谁能建议我。?

1 个答案:

答案 0 :(得分:0)

以这种方式发布声明有一些缺点:

  • 如果权限(角色)发生更改,则令牌中的声明值不会自动更新。
  • 每个声明都会添加到令牌中,该令牌会在每个请求中发送。这将增加请求的长度。
  • 如果您有多个系统,则角色值可能具有不同的含义。

请记住:声明代表用户(身份),而不是他/她所允许的 进入。 理想情况下,您可以从API请求权限。

如果您决定采用此解决方案,则应尽量尽量减少已发布的声明。与Company_roleXClaimValueX

一样