繁体   English   中英

Keycloak 授权 - 最佳实践角色与组

[英]Keycloak Authorization - best practice roles vs groups

我有一个使用 Keycloak 保护的 Web 应用程序。 为了使服务描述简短,我们将用户和文档作为服务中的实体。 用户可以访问一个或多个文档,并且可以编辑或阅读该文档。

目前我们有管理员、最终用户、开发人员等角色。然后我们在 Keycloak 之外保留一个数据库表,用于将文档映射到用户以及哪些用户对哪些文档具有什么访问级别。 我们所有的最终用户在 Keycloak 中都有 EndUser 角色。 每次最终用户尝试读取/编辑文档时,我们都必须在数据库表中进行查找以进行授权。

我们想将该表迁移到 Keycloak。 据我了解,我基本上有两种选择:

  • 创建很多角色,每个文档两个,名称分别为doc_read_[DOCUMENT-ID]doc_edit_[DOCUMENT-ID]等。 然后将正确的角色分配给正确的用户。 这里的缺点是角色的数量会增加很多。 此外,附加到用户的角色数量将非常大。

  • 为每个文档创建一个组,名称为文档 ID。 有不同的子组进行读/写,然后将用户添加到正确的组中。 缺点是组的数量会非常大。 另外,我将在组名上依赖授权,因此组名列表必须映射到令牌。

我不想为每个用户添加带有文档 ID 的用户属性。 使用这种方法,我无法获得文档的概览,也无法查看哪些用户可以访问给定的文档。

这里的最佳做法是什么? 有没有其他解决方案可以解决这个问题? 这一定是一个非常常见的设置。

这只是我的看法。

据我了解,这两种解决方案都不是最理想的,为每个文档添加一个角色是不自然的,而且粒度太细。 正如您已经提到的那样,这会导致过多的角色,您可能必须将它们添加到令牌中。

我个人将 Keycloak 仅用于身份验证部分并在后端进行授权部分。 我还将尝试以反映允许哪些用户角色操作它们的方式对文档进行分组。

或者,您可能会尝试使用 Keycloak 的授权功能来处理该用例,但是我从未使用过它,因此关于此选项我无话可说。

在我看来,您想要实现的目标与您的业务逻辑非常相关,我不建议您依赖 keycloak 来实现。 你的代币会不断增长,管理真的是一场噩梦。

我认为拥有具有良好缓存以查找权限的服务没有问题,大部分数据不会随着时间的推移而发生太大变化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM