0

使用 Keycloak 的新手,我正在尝试了解为用户分配角色。这是我使用的格式。我创建角色和用户,并创建具有某些角色的组。然后,我根据组中的角色将用户分配到组以具有权限。现在我在以下情况下遇到困难。

假设我有 4 个资源A, B, C, D、2 个角色R1, R2、2 个组G1, G2和一个用户U

R1有权限(我使用这些授权范围:read, write, create, delete)来访问A, B.
R2仅有权访问 A, B, C, D资源。
G1有角色R1并且G2R2分配给他们的角色。

现在我创建了一个用户U并希望让他访问G1希望该用户能够访问 2 个提到的资源。但事实并非如此,我注意到U没有被授予访问这 4 个资源中的任何一个的权限。我还需要添加这个用户G2才能访问所有 4 个资源,这不是我想要的。

同样在另一种情况下,如果我想将用户添加到G2,我希望他能够访问所有 4 个资源。但我注意到这个用户只能访问C, D. 我也应该添加他以G1访问所有资源。

我相信 keycloakand在分配权限时会以条件方式进行检查。有没有办法用彼此专有的资源来定义角色?

4

1 回答 1

1

根据我使用 Keycloak 的经验,并且在您没有完整配置的情况下,我建议您将权限纳入图片。

https://www.keycloak.org/docs/latest/authorization_services/#_permission_overview

注意:请注意,这只是个人建议,不是硬性方法。

使用权限时,可以将决策策略设置为肯定。(在您的情况下,默认权限似乎设置为一致,这意味着所有策略都必须评估为真)

https://www.keycloak.org/docs/latest/authorization_services/#_permission_decision_strategies

我的方法是:

  1. 为组分配角色(与您所做的相同) G1 -> R1 G2 -> R2

  2. 将用户添加到组(与您所做的相同)

  3. 为 R1(Policy1) 和 R2(Policy2) 创建基于角色的策略。

  4. 为每个资源创建权限(PermA、PermB、PermC、PermD)

  5. 将权限与所需的角色策略相关联

(以你为例)

由于 R2 可以访问所有资源。将 Policy2 与所有 4 个权限关联。

由于 R1 可以访问 A、B 资源。仅将 Policy1 与 PermA、PermB 关联。

将决策策略保持为“肯定”。

于 2020-05-29T08:47:52.897 回答