在 Keycloak 中设置权限

Setting permissions in Keycloak

我想使用 Keycloak 的授权系统创建基于角色的访问控制系统。

我在微服务架构中使用 OAuth 2.0 并遇到以下问题:我有具有唯一 ID 的记录(它们植根于其他实体)并且我想要实现的是只有特定用户或一组用户可以查看(修改)具有这些 ID 的条目。 我希望能够明确地将用户(或组)绑定到这些 ID(例如,可以在 JWT 中接收它们)。

如何使用 Keycloak 解决此问题以及执行此操作的最佳做​​法是什么? 也许我误解了什么,这个问题可以用另一种方式解决吗?

提前致谢!

有两种方法可以解决这个问题:

1.使用客户端角色:

i) ie. create some set of pre-defined roles (viewer, admin, editor, etc).
ii) Now whenever your IDs are generated, then generate one client in keycloak and assign any of above roles.
iii) in JWT, it will be visible in path : 
    "resource_access" --> <CLIENT_IDs> --> "roles": [your defined roles]

然后,在服务层可以使用授予的权限或按角色组自动设置。

2。使用领域角色:

i) in JWT: this will be fetched from path:  "realm_access"-> "roles":[your defined roles].

如果您只有 2 个角色(例如:管理员和查看者),则首选第二个选项。

如果这有帮助,请告诉我。 :)