我已经在Docker中部署了基于Fiware通用引擎的应用程序。版本是:
但是,当我想在Keyrock中创建权限时,找不到在/resource1/<user>/info
这样的资源字段中输入动态资源的特定语法或字符序列,或者仅指定了资源前缀,例如:/resource2/<whatever>
。
真正存在动态资源的语法,并且authzforce可以创建与动态资源相关联的权限,还是必须创建XACML规则?
答案 0 :(得分:1)
是的,有必要创建一个高级XACML规则。例如,您可以查看IDM源代码中的XACML Rule template,该IDM源代码用于生成基本规则(用于静态资源路径)。您将不得不对其进行自定义(除了删除模板代码<%...%>
之外),尤其是修改Target和Condition元素(使用XACML函数string-concatenate动态创建字符串/resource1/{param}/info
)。
另一个困难是在PEP中获取{param}
值,并确保将其在XACML请求中发送给AuthzForce PDP。从Pep's Authzforce client code(为简明起见,名称简称)可以看到,Pep-proxy仅获取/发送以下XACML属性:resource-id,sub-resource-id,action-id,subject-role。因此,例如,如果您希望用户ID为{param}
,则必须修改我刚刚提到的Pep代码,即从userInfo
变量中提取用户ID,并添加相应的XACML属性(主题-id)。或使用自己的Pep,当然可以做任何想做的事情。