2

我正在爲客戶端實現IdentityServer4。在這裏,我有點困惑於生成和設置索賠,ProfileServiceIdentityServer4多個聲明生成(特定情況)

場景:

1)用戶可以屬於多個公司。

2)用戶可以在一個公司有一個角色。

3)用戶可以在不同的公司有不同的角色。

E.g. User => Alice屬於companyX和companyY。

一)愛麗絲在公司CompanyX角色 '管理員'

B)愛麗絲在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"), 

我不確定這是否是最好的方法。 任何人都可以建議我。

+0

https://leastprivilege.com/2016/12/16/identity-vs-permissions/ – leastprivilege

回答

0

有一些美中不足發出索賠這種方式:

  • 如果權限(角色)的變化,令牌中的要求值不會自動更新。
  • 每個聲明都被添加到每個請求中發送的令牌中。這會增加請求的長度。
  • 如果您有多個系統,角色值可以有不同的含義。

請記住:索賠代表用戶(身份),而不是他/她允許 訪問。 理想情況下,您可以從API請求權限。

如果您決定採用此解決方案,您應該儘可能減少發佈的索賠。 Like Company_roleXClaimValueX