【问题标题】:Modelling user created Resource-level permissions in keycloak建模用户在 keycloak 中创建的资源级权限
【发布时间】:2021-09-18 14:13:00
【问题描述】:

这更多是关于在 Keycloak 中为用户创建的资源建模权限/角色的惯用方法的早期问题。对于这个用例,我不确定是否应该只使用 Keycloak 进行身份管理并将访问管理留给应用程序。

建议用例:在应用程序中,资源属于一家公司,一家公司可以有多个用户。一些用户是管理员用户,负责为其他用户设置角色/权限。这些权限可以授予全局访问权限(例如用户可以查看所有文件)或资源特定访问权限(例如用户可以查看/修改营销文件夹中的文件)。

一个更具体的例子是 AWS IAM。多个用户可以在一个 AWS 账户上,但可以在不同级别控制访问。例如,可能会设置一个授予 S3 读取权限的角色,而另一个角色可能对营销存储桶拥有 S3 删除权限。

由于这些资源/角色是用户创建和管理的,我想我的应用程序需要提供自己的 UI,然后使用 REST API 与 Keycloak 进行通信。因为这些都是用户生成的,并且可能有许多公司在使用该应用程序,所以我可以预见到 Keycloak 中会保留大量与资源相关的数据。

我不确定这是否是个好主意 - 我想我需要经常与 Keycloak 服务器通信,以验证给定用户是否有权访问他们尝试请求/修改的资源。似乎 Keycloak 更适合与特定用户创建的资源无关的范围/权限?如果它是一个标准用例,是否有任何关于这种方法的文档(我找不到任何东西)?

【问题讨论】:

    标签: authentication authorization keycloak identity keycloak-rest-api


    【解决方案1】:

    Keycloak 能够非常顺利地管理用户的角色,您可以在 Java 代码中使用以下注释:

    @Secured("ROLE_ADMIN")
    

    或者

    @RolesAllowed({"ROLE_USER", "ROLE_ADMIN"})
    

    在控制器内部,连同 HTTP 方法的映射或在 HTML 代码中,如

    sec:authorize="hasRole('ADMIN')"
    

    这意味着您可以管理查看/修改营销文件夹中文件的访问权限。要进一步提高用户访问级别,您可以使用令牌授权;请阅读例如this article.

    【讨论】:

      猜你喜欢
      • 2018-01-09
      • 2021-10-25
      • 2018-02-28
      • 1970-01-01
      • 2017-06-30
      • 2014-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多