这更多的是关于在Keycloak中为用户创建的资源建模权限/角色的惯用方法的早期问题。对于这个用例,我不确定是否应该只使用Keycloak进行身份管理,而将访问管理留给应用程序。
建议用例:在应用中,资源属于一个公司,一个公司可以有多个用户。有些用户是管理员用户,负责为其他用户设置角色/权限。这些权限可以授予全局访问权限(例如,用户可以查看所有文件)或资源特定访问权限(例如,用户可以查看/修改营销文件夹中的文件)。
一个更具体的例子是AWS IAM。多个用户可以在一个AWS账户上,但可以在不同的级别控制访问。例如,可以设置一个授予S3读取权限的角色,而另一个角色可能对营销存储桶具有S3删除权限。
因为这些资源/角色是用户创建和管理的,所以我想我的应用程序需要提供自己的UI,然后使用REST API与Keycloak通信。由于这些都是用户生成的,而且可能有许多公司在使用该应用程序,因此我可以预见在Keycloak中将持久化大量与资源相关的数据。
我不确定这是不是一个好主意--我想我需要频繁地与Keycloak服务器通信,以验证给定的用户是否有权访问他们试图请求/修改的资源。看起来Keycloak更适合与特定用户创建的资源无关的作用域/权限?如果这是一个标准用例,有没有关于这样的方法的文档(我还没有找到任何东西)?
发布于 2021-09-18 17:58:30
Keycloak能够非常流畅地管理用户的角色,接下来您可以在Java代码中使用这些角色,注释如下:
@Secured("ROLE_ADMIN")或
@RolesAllowed({"ROLE_USER", "ROLE_ADMIN"})在Controller内部,与HTTP方法的映射一起使用,或者在HTML代码内部,比如
sec:authorize="hasRole('ADMIN')"这意味着您可以管理对市场营销文件夹中文件的查看/修改访问权限。要进一步了解用户访问级别,您可以使用令牌授权;请阅读例如this article。
https://stackoverflow.com/questions/68296073
复制相似问题