我在Docker中部署了基于Fiware通用启动器的应用程序。版本是:
但是,当我想在keyrock中创建权限时,我找不到特定的语法或字符序列来在资源字段中输入动态资源,如:/resource1/<user>/info
,或者只指定资源前缀,如:/resource2/<whatever>
。
确实存在动态资源的语法,authzforce可以创建与动态资源关联的权限,还是必须创建XACML规则?
是的,有必要创建一个Advanced XACML规则。例如,您可以查看IDM源代码中的XACML Rule template,它用于生成基本规则(用于静态资源路径);你必须自定义它(除了删除模板代码<%...%>
),特别是修改Target和Condition元素(使用XACML函数string-concatenate动态创建字符串/resource1/{param}/info
)。
另一个困难是在PEP中获取{param}
值,并确保它在XACML请求中发送到AuthzForce PDP。 Pep-proxy只获取/发送以下XACML属性,您可以从Pep's Authzforce client code(名称缩短为简洁性)中看到:resource-id,sub-resource-id,action-id,subject-role。因此,如果你想要用户id为{param}
,你必须修改我刚才提到的Pep代码,即从userInfo
变量中提取用户ID,并在Request中添加相应的XACML属性(subject-id)。或者使用你自己的Pep,做任何你想做的事。