javascript - 如何从 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 代码中对其进行评估。
问题是:
- 我们如何在资源 URI 中定义路径参数?
- 我们如何在我的 JS 策略的代码中获取路径参数?
- 如果无法定义路径参数,我们如何至少获取完整的请求资源 URI?
根据策略评估 API (org.keycloak.authorization.policy.evaluation.Evaluation) 的 JavaDocs,我们可以获取Resource
对象。然而,据我们所知,这个对象包含 Keycloak 中定义的资源而不是请求的资源,即它包含带有参数的 URI,{username}
但不包含它的具体值。
你有什么想法?
解决方案
推荐阅读
- html - 垂直居中对齐的图像更靠近底部而不是顶部
- spring - Spring Boot 无法使用抽象和接口自动装配组件
- ios - 获取拖动预览的帧
- sparql - SPARQL:DISTINCT 关键字不适用于 VALUES
- c# - Mvvmcross Android - recyclerview 自定义适配器在滚动时抛出错误
- angular - 使用选择快照的 NGXS 版本
- angular - 恢复网络连接后加载 HttpLoaderFactory 转换器不起作用
- hyperledger-fabric - 我正在使用超级账本结构 v1,但网络无法启动。出现以下错误
- ios - Swift - 处理点击事件时是否可以避免选择器?
- algorithm - 限制一个节点的开始时间的调度/路径规划