我是一个前端项目的一部分,我需要一些帮助来将我们的授权模型引入到密钥斗篷中。我们构建在node.js之上,整个项目使用无状态的微服务,以及前端中间件作为我们使用的整个后端服务。前端使用标准的JS适配器进行会话和令牌管理。
到目前为止,我们已经确定了四个角色:旅行社、后台、配置器和数据安全官员。到目前为止这很容易。我的问题是如何建模我们需要的下一个授权层。
例如:对于旅行社,我们希望能够授予每个人,无论他是否能看到特定的客户数据,或能够取消订单。旅行社大约有6-8种选择.因此,对于后台办公室来说,应该有库存业务的选择或对订单的不同看法。
就像后端一样,我们不保存任何数据!这就是为什么我把所有的东西都存储在keycloak中,并找到一种方法轻松地将这些信息带回到我们的中间件中。
到目前为止,我尝试过/想到了以下几点:
*第一层使用组,第二层使用角色。
*将领域角色用于上层,属性用于较低层次结构。->属性不包括在访问令牌中。
*对较低层次结构上的上层角色和客户端角色使用领域角色。->工作,但我们必须确保第二层上的角色绝对与第一层上的一个角色相关联。我还不知道怎么回事。
*使用第一层的角色和第二层的资源。但现在我不知道用这些策略和权限.
Stack Overflow的讨论似乎非常有成效,我想尝试一下,尽管我没有任何代码可以提供。
谢谢您的帮助,如果我能提供更多的信息,请告诉我。
斯文
发布于 2019-07-02 22:08:27
与选民不同的是,我认为这是一个合理的问题。
在使用Keycloak组/角色/属性方面,您似乎走上了正确的道路。你可以选择一个适合你需要的组合。例如,如果需要层次结构,则可以使用组。或者您可能希望使用角色,因为这些角色可以是复合的。
无论您选择哪条路径,您的问题都是如何在令牌中公开这些路径。它可以使用映射器配置来完成。
例如,要为用户公开角色,您需要创建一个“用户域角色”映射程序,它将您的角色添加到令牌上作为声明。为此,请执行以下操作:
还有“组成员”和“用户属性”的映射器,可用于将这两个概念添加为声明。如果这些还不够,或者如果您需要更细粒度的控制,则可以使用您自己的自定义映射器。有关如何做到这一点,请参阅关于堆栈溢出的Keycloak文档和其他问题。
https://stackoverflow.com/questions/56856417
复制相似问题