首页 > 解决方案 > 如何从 Keycloak 授权服务策略中请求的资源 URI 中获取路径参数?

问题描述

使用Keycloak 授权服务(版本 11.0),我们希望实现以下规则(路径和声明仅用于演示):

/users/{username}/more/sub/pathes如果username访问令牌中声明的值与请求的资源中的参数值匹配,则允许对资源username的请求。

例如:

/users/alice/more/sub/pathes如果username访问令牌中的声明具有 value ,则允许请求资源alice

/users/bob/more/sub/pathes如果username访问令牌中的声明具有 value ,则允许请求资源bob

我们可以使用基于 JavaScript 的策略创建自己的策略。如示例所示,我们可以从访问令牌中获取任何声明(例如,所需的username声明)并在我们的 JS 代码中对其进行评估。

问题是:

  1. 我们如何在资源 URI 中定义路径参数?
  2. 我们如何在我的 JS 策略的代码中获取路径参数?
  3. 如果无法定义路径参数,我们如何至少获取完整的请求资源 URI?

根据策略评估 API (org.keycloak.authorization.policy.evaluation.Evaluation) 的 JavaDocs,我们可以获取Resource对象。然而,据我们所知,这个对象包含 Keycloak 中定义的资源而不是请求的资源,即它包含带有参数的 URI,{username}但不包含它的具体值。

你有什么想法?

标签: javascriptresourcesauthorizationkeycloakpolicy

解决方案


推荐阅读