首页 > 解决方案 > Fiware IDM:动态权限资源

问题描述

我在 Docker 中部署了一个基于 Fiware 通用启用程序的应用程序。版本是:

但是,当我想在 keyrock 中创建权限时,我找不到特定的语法或字符序列来在资源字段中输入动态资源,例如:/resource1/<user>/info,或仅指定资源前缀,例如:/resource2/<whatever>

动态资源示例

动态资源的语法确实存在,并且 authzforce 可以创建与动态资源关联的权限,还是有必要创建 XACML 规则?

标签: fiwarexacmlabacfiware-wilmaauthzforce

解决方案


是的,有必要创建一个高级 XACML 规则。例如,您可能会查看 IDM 源代码中的XACML Rule 模板,该模板用于生成基本 Rule(用于静态资源路径);您必须对其进行自定义(除了删除模板代码<%...%>),尤其是修改 Target 和 Condition 元素(使用 XACML 函数 string-concatenate/resource1/{param}/info动态创建字符串)。

另一个困难是获取{param}PEP 中的值,并确保它在 XACML 请求中发送到 AuthzForce PDP。从Pep 的 Authzforce 客户端代码中可以看出,Pep-proxy 仅获取/发送以下 XACML 属性(为简洁起见缩短名称):resource-id、sub-resource-id、action-id、subject-role。因此,如果你想以user-id{param}为例,你必须修改我刚才提到的Pep代码,即从userInfo变量中提取用户ID并在Request中添加相应的XACML Attribute(subject-id)。或者使用你自己的 Pep,当然可以做任何你想做的事情。


推荐阅读