jwu*_*ebb 5 keycloak keycloak-services
我们将 Keycloak 用于 SaaS 产品。每个用户都是租户/帐户的一部分,并且具有访问该帐户数据的特定角色。角色在Keycloak中配置,相关帐户保存为用户的用户属性。
现在我们有一个新的要求,即允许用户访问多个帐户。对于每个帐户,用户可能具有不同的角色:
User A:
- Account A:
- ADMIN
- Account B:
- Reader
User B
- Account B:
- Reader
...
Run Code Online (Sandbox Code Playgroud)
我发现了很多关于多租户的不同方法的文章,但没有这方面的内容。大多数文章结合了角色和组。但就我而言,我需要为每个帐户创建一个新组。所以我最终会得到数千或数百万个团体。
现在我的 API 可以根据发布的 JWT 授权请求。理想情况下我可以保留这个。
实现此结构(用户可以访问具有不同角色的多个帐户)的最佳方法是什么?这真的可以用keycloak实现吗?
还是我的思考方向错了?这听起来像是一个相当常见的用例。
已经非常感谢了。
角色在 Keycloak 中配置,相关帐户保存为 > 用户的用户属性。
我不确定您为什么需要这个,因为您可以根据用户角色进行推断。
现在我们有一个新的要求,即允许用户访问多个帐户。对于每个帐户,用户可能具有不同的角色:
如果我完全理解您的问题,我认为可以通过客户级角色来解决。例如:
去 :
要将角色设置为用户,请转到
现在我的 API 可以根据发布的 JWT 授权请求。理想情况下我可以保留这个。
Account A向代表发出的令牌请求user a如下所示:
"acr": "1",
"realm_access": {
"roles": [
"offline_access",
"uma_authorization"
]
},
"resource_access": {
"AccountA": {
"roles": [
"ADMIN"
]
},
"AccountB": {
"roles": [
"Reader"
]
},
"account": {
"roles": [
"manage-account",
"view-profile"
]
}
},
Run Code Online (Sandbox Code Playgroud)
有人可能会说,当向客户端请求令牌时,Account A我们并不真正关心客户端中的角色Account B。这可以通过使用 Keycloak 的 Scope 功能来解决。利用这一功能,人们可以从其他客户端中选择与当前客户端相关的角色。默认情况下,包括所有角色。尽管如此,要过滤角色,需要执行以下操作:
OFF选项Full Scope Allowed;令牌现在的样子:
"resource_access": {
"AccountA": {
"roles": [
"ADMIN"
]
}
},
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1358 次 |
| 最近记录: |