gpt4 book ai didi

security - Keycloak:基于角色的用户客户端登录访问限制

转载 作者:搜寻专家 更新时间:2023-10-30 22:49:27 25 4
gpt4 key购买 nike

我正在尝试使用 keycloak 实现基于角色的客户端应用程序(VueJS 多页面应用程序)控制的相当简单的用例。

Client role mapping

如图所示,我在一个领域中有三个不同的角色和三个不同的客户端。
图中的箭头表示哪个角色可以访问哪个客户端。

所以我的主要目标是,

  • 角色为Viewer 的用户应该只能登录Viewer Application。如果同一用户试图访问 Operator ApplicationAdmin application,那么 keycloak 应该简单地拒绝该用户这样做。
  • 具有 AdminOperator 角色的用户应遵循相同的规则。 Admin 角色的用户应该能够通过 keycloak 登录到任何这些应用程序。

为了实现这个用例,我尝试了以下方法,

  • 首先通过适当的角色映射到用户并在客户端创建角色。在这种情况下,我先创建领域级角色,然后创建客户端级角色,然后将适当的角色分配给在用户部分中创建的用户。
  • 启用授权。在策略中,我删除了授予所有用户访问客户端的默认策略。并创建一个User策略和Client策略来限制对客户端应用程序的访问
  • 还尝试了基于Group 的授权策略。在这种情况下,我创建了一个具有客户角色的组,然后将用户分配给这些组。并通过 Authorization 组策略启用它们。

但是,不幸的是,这些都不起作用。这意味着我的具有 Viewer 角色的用户可以登录到我的管理应用程序。这很奇怪。

最佳答案

你可以在没有扩展的情况下做到这一点。

  • 复制所需的流程(例如浏览器流程)
  • 创建一个新的子流(例如用于浏览器表单)并将其命名为Access By Role 并选择generic 作为类型。
  • 对于新的子流程,确保在流程概览中选择了CONDITIONAL
  • 为新的子流程添加执行Condition - User Role,使其成为REQUIRED并配置它:
    • 别名:admin-role-missing
    • 角色:管理员(或任何您的角色)
    • 否定:真
  • 添加另一个执行:Deny Access 并使其也成为REQUIRED

最终结果应该类似于这样: enter image description here

如果条件“admin-role-missing”为真,这将拒绝访问。

您还可以从文档中了解更多信息:explicitly-deny-allow-access-in-conditional-flows

此外,不要忘记前往您的客户端并在身份验证覆盖中选择流程。

关于security - Keycloak:基于角色的用户客户端登录访问限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57287497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com