1

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

  • 猎户座 1.14
  • 天鹅座 1.9.0
  • 授权 5.4.1
  • Keyrock:最新的
  • Pep 代理:7.0.1

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

动态资源示例

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

4

1 回答 1

1

是的,有必要创建一个高级 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,当然可以做任何你想做的事情。

于 2018-08-30T21:02:00.093 回答