Keycloak 在KeyClope中设置具有两层的角色模型

Keycloak 在KeyClope中设置具有两层的角色模型,keycloak,Keycloak,我是一个前端项目的一部分,我需要一些帮助来将我们的授权模型引入KeyClope。我们正在node.js上构建,整个项目使用无状态微服务——以及我们的前端中间件作为我们使用的整个后端服务。前端使用标准JS适配器进行会话和令牌管理 到目前为止,我们已经确定了四个角色:旅行社、后台、配置器和数据安全官。到目前为止这很容易。我的问题是如何为我们需要的下一个授权层建模 例如:对于旅行社,我们希望能够允许每人查看特定的客户数据或取消订单。旅行社大约有6-8种选择。因此,对于后台办公室,应提供库存操作选项或对

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

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

例如:对于旅行社,我们希望能够允许每人查看特定的客户数据或取消订单。旅行社大约有6-8种选择。因此,对于后台办公室,应提供库存操作选项或对订单的不同看法

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

以下是我迄今为止尝试/想到的:
*第一层使用组,第二层使用角色。-->无法工作,因为组不会暴露在令牌中。
*上层使用领域角色,下层使用属性。-->访问令牌中不包括属性。
*将领域角色用于上层和下层层次结构上的客户端角色。-->工作正常,但我们必须确保第二层上的角色肯定只与第一层上的一个角色关联。我还不知道怎么做。
*第一层使用角色,第二层使用资源。-->这似乎非常接近我们的需要。但目前,我无法找出正确的方法来处理所有这些策略和权限

在Stack Overflow这里的讨论似乎非常有成果,我想尝试一下,尽管我没有任何代码可以提供

谢谢你的帮助,如果我需要提供更多的信息,请告诉我


斯文

与反对者不同,我发现这是一个合理的问题

就使用KeyClope组/角色/属性而言,您似乎走在了正确的道路上。您可以选择适合您需要的组合。例如,如果需要层次结构,可以使用组。或者您可能希望使用角色,因为这些角色可以是复合的

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

例如,要为用户公开角色,您需要创建一个“用户领域角色”映射器,将您的角色添加为令牌上的声明。为此:

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

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

    堆栈溢出是一个问答平台,而不是讨论板。你应该只根据你所面临的实际问题提出实际的、可回答的问题。喋喋不休的开放式问题削弱了我们网站的实用性,并将其他问题推到了头版。对于细粒度授权,您应该查看