Keycloak 授权服务-动态资源和资源属性

3

我有一个Spring Boot应用程序,正在使用Keycloak的授权服务。

假设我有一个名为Report1,id为1,由user1创建的报告。

访问该资源的URL将是/app/{reportId}。要访问报告,将使用/app/1

我想将对此URL的访问限制为仅限于报告所有者/创建者(user1)。由于这是一种“动态”URL,并且ID未预先确定,因此我无法在Keycloak中创建具有静态URL(app/1)的资源。

我想引入类似以下JS策略:

    var context = $evaluation.context;
    var identity = context.identity;
    var permission = $evaluation.permission;
    var resource = <Report1>

    if (resource.<created_by_user_id> == identity.id) {
        $evaluation.grant();
    }

从上面的代码:

  • Report1 应该动态地从数据库中确定。
  • created_by_user_id 是 Report1 的一个属性,其中包含 user1

有什么想法吗?


你最终是如何解决这个问题的? - Jonas Kreusch
1个回答

0

据我所知,创建资源时支持动态URL。 关于资源属性,您可以使用类似以下的内容:

var attributes = resource.getAttributes();

你可以附加一个专用属性,比如所有权,其中值是创建者(user1)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接