fiware - Fiware IDM:动态权限资源
问题描述
我在 Docker 中部署了一个基于 Fiware 通用启用程序的应用程序。版本是:
- 猎户座 1.14
- 天鹅座 1.9.0
- 授权 5.4.1
- Keyrock:最新的
- Pep 代理:7.0.1
但是,当我想在 keyrock 中创建权限时,我找不到特定的语法或字符序列来在资源字段中输入动态资源,例如:/resource1/<user>/info
,或仅指定资源前缀,例如:/resource2/<whatever>
。
动态资源的语法确实存在,并且 authzforce 可以创建与动态资源关联的权限,还是有必要创建 XACML 规则?
解决方案
是的,有必要创建一个高级 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,当然可以做任何你想做的事情。
推荐阅读
- apache-spark - 我们可以使用预编译的 hadoop-spark 包在 mesos 上运行 spark 吗?
- tomcat - Tomcat 8.0.53 启动时未能获得密码列表警告
- python - 创建模型时的信号
- php - 找不到时如何修复我的代码以重置行
- matlab - 在 matlab 中使用 logig 层而不是 softmax 层创建深度网络
- ruby-on-rails - Rails 5.1+ 路由:`resources` 不起作用,但显式路由定义有效
- java - 使用 Payara 服务器创建 (javax.sql.XADataSource) 数据源 (Microsoft SQLServer) 时出错:java.lang.NoSuchFieldError: isEC
- javascript - HTML 文件在 Django 中无法正确加载
- assembly - 装配几何图
- javascript - 如何在 Zap 代码中初始化 z 对象以使用 z.JSON.parse 函数?