如何避免将用户添加到具有资源的所有组
How to avoid adding user to all groups with a resource
刚开始使用 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
,G2
分配了角色 R2
。
现在我创建了一个用户 U
并希望授予他 G1
的访问权限,希望该用户能够访问上述 2 个资源。但事实并非如此,我注意到 U
没有访问 4 种资源中的任何一种的权限。我还需要将此用户添加到 G2
才能访问所有 4 个资源,这不是我想要的。
同样在另一种情况下,如果我想将用户添加到 G2
,我希望他能够访问所有 4 个资源。但是我注意到这个用户只能访问 C, D
。我也应该将他添加到 G1
以访问所有资源。
我相信 keycloak 在分配权限时会检查 and
条件方式。有没有办法定义资源互不相同的角色?
根据我使用 Keycloak 的经验,如果您没有完整的配置,我建议将 permissions 纳入考虑范围。
https://www.keycloak.org/docs/latest/authorization_services/#_permission_overview
NOTE: Please note that this is just a PERSONAL recommendation, not a
hard-fast approach.
使用权限时,可以将决策策略设置为肯定。 (在您的情况下,默认权限似乎设置为一致,这意味着所有政策都必须评估为真)
(https://www.keycloak.org/docs/latest/authorization_services/#_permission_decision_strategies)
我的处理方式是:
为组分配角色(与您所做的相同)
G1 -> R1
G2 -> R2
将用户添加到组(与您所做的相同)
为 R1(Policy1) 和 R2(Policy2) 创建基于角色的策略。
为每个资源(PermA、PermB、PermC、PermD)创建权限
将权限与所需的角色策略相关联
(以你为例)
因为 R2 可以访问所有资源。将 Policy2 与所有 4 个权限相关联。
因为 R1 可以访问 A、B 资源。将 Policy1 仅与 PermA、PermB 相关联。
保持决策策略为肯定。
刚开始使用 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
,G2
分配了角色 R2
。
现在我创建了一个用户 U
并希望授予他 G1
的访问权限,希望该用户能够访问上述 2 个资源。但事实并非如此,我注意到 U
没有访问 4 种资源中的任何一种的权限。我还需要将此用户添加到 G2
才能访问所有 4 个资源,这不是我想要的。
同样在另一种情况下,如果我想将用户添加到 G2
,我希望他能够访问所有 4 个资源。但是我注意到这个用户只能访问 C, D
。我也应该将他添加到 G1
以访问所有资源。
我相信 keycloak 在分配权限时会检查 and
条件方式。有没有办法定义资源互不相同的角色?
根据我使用 Keycloak 的经验,如果您没有完整的配置,我建议将 permissions 纳入考虑范围。
https://www.keycloak.org/docs/latest/authorization_services/#_permission_overview
NOTE: Please note that this is just a PERSONAL recommendation, not a hard-fast approach.
使用权限时,可以将决策策略设置为肯定。 (在您的情况下,默认权限似乎设置为一致,这意味着所有政策都必须评估为真)
(https://www.keycloak.org/docs/latest/authorization_services/#_permission_decision_strategies)
我的处理方式是:
为组分配角色(与您所做的相同) G1 -> R1 G2 -> R2
将用户添加到组(与您所做的相同)
为 R1(Policy1) 和 R2(Policy2) 创建基于角色的策略。
为每个资源(PermA、PermB、PermC、PermD)创建权限
将权限与所需的角色策略相关联
(以你为例)
因为 R2 可以访问所有资源。将 Policy2 与所有 4 个权限相关联。
因为 R1 可以访问 A、B 资源。将 Policy1 仅与 PermA、PermB 相关联。
保持决策策略为肯定。