keycloak - 在keycloak中设置两层角色模型

标签 keycloak

我是前端项目的一部分,我需要一些帮助才能将我们的授权模型引入 keycloak。我们在 node.js 上构建,整个项目使用无状态微服务 - 以及作为我们使用的整个后端服务的前端中间件。前端使用标准的 JS 适配器进行 session 和 token 管理。

到目前为止,我们已经确定了四个角色:旅行社、后台、配置人员和数据安全官。到目前为止这很容易。我的问题是如何为我们需要的下一个授权层建模。

例如:对于旅行社,我们希望能够授予每个人是否可以查看特定客户数据或是否可以取消订单的权限。旅行社大约有 6-8 种选择。因此,对于后台办公室,应该有库存操作的选择权或对订单的不同看法。

像后端一样,我们不保留任何数据!这就是为什么我将所有内容存储在 keycloak 中并找到一种方法轻松将这些信息带回我们的中间件。

这是我到目前为止尝试/想到的:
* 第一层使用组,第二层使用角色。 --> 不起作用,因为组没有在 token 中公开。
* 上层使用领域角色,下层使用属性。 --> 属性不包含在访问 token 中。
* 将领域角色用于较低层次结构中的上层角色和客户端角色。 --> 有效,但我们必须确保第二层上的角色肯定只与第一层上的一个角色相关联。我还不知道如何。
* 使用第一层的角色和第二层的资源。 --> 这似乎非常接近我们所需要的。但目前我无法找出所有这些策略和权限的正确方法......

Stack Overflow 上的讨论似乎很有成效,我想尝试一下,尽管我没有任何代码可以提供。

感谢您的帮助,如果我提供更多信息,请告诉我。

斯文

最佳答案

与downvoter 不同,我发现这是一个合理的问题。

就使用 Keycloak 组/角色/属性而言,您似乎走在正确的道路上。您可以选择适合您需求的组合。例如,如果您需要层次结构,则可以使用组。或者您可能想要使用角色,因为它们可以是复合的。

无论您选择哪条路径,您的问题是如何在 token 中公开这些。它可以使用映射器配置来完成。

例如,要为用户公开角色,您需要创建一个“用户领域角色”映射器,将您的角色添加为对 token 的声明。去做这个:

  • 点击左侧菜单中的“客户”
  • 单击您正在使用的客户端
  • 单击“映射器”选项卡
  • 添加类型为“用户领域角色”的映射器。

  • 还有用于“组成员身份”和“用户属性”的映射器,可用于将这两个概念添加为声明。如果这些还不够,或者如果您需要更细粒度的控制,您可以推出自己的自定义映射器。有关如何执行此操作,请参阅 Stack Overflow 上的 Keycloak 文档和其他问题。

    关于keycloak - 在keycloak中设置两层角色模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56856417/

    相关文章:

    基于 Keycloak 组的策略可防止用户访问客户端

    oauth-2.0 - portainer keycloak 20 oauth登录 "unauthorized"/"Unable to login via OAuth"

    keycloak - 为什么 Keycloak 不断重新部署相同的 .jar 文件?

    spring-security - Vaadin 23 Spring Security with Keycloak - 登录后将用户重定向到正确的页面

    java - 在 Keycloak 中通过 refresh_token 刷新 access_token

    spring-security - 如何使用 spring security [自定义登录页面] 完成 keycloak 用户更新密码所需的操作

    freemarker - Freemarker 模板中的 Keycloak 访问 cookie 和/或 url 查询参数

    keycloak 验证电子邮件设置持续时间,链接过期

    spring-security - 在 Spring Resource Server 中采用来自 JWT 的权限

    java - Keycloak:从自定义端点 (SPI) 发送 AdminEvent