使用“RedAttributeFinder”类的 PIP 扩展代码现在正在工作。它正确地将其声明注册到 WSO2 PDP 扩展控制台显示中。
我现在开始创建 XACML 策略,处理返回扩展程序提供的动态数据值的字段(例如名为“ http://w3.red.com/subject/employeeCountryCode的字段 ”的字段)。
数据查找的关键字段是:urn:oasis:names:tc:xacml:1.0:resource:resource-id
,它以电子邮件格式映射用户身份。
问题一: 在 WSO2 开始时注册的“RedAttributeFinder”类中如何调用“getAttributesValues”方法。什么触发了从 PDP 进程(或其传入请求)调用方法?
在示例代码以及我的实现中,关键字段是作为 PEP 请求实现的一部分加载的资源 ID。
..
myRequest += "<Attributes Category=\"urn:oasis:names:tc:xacml:1.0:subject-category:access-subject\">" + "\n";
myRequest += "<Attribute AttributeId=\"urn:oasis:names:tc:xacml:1.0:subject:subject-id\" IncludeInResult=\"false\">" + "\n";
myRequest += "<AttributeValue DataType=\"http://www.w3.org/2001/XMLSchema#string\">tony@br.red.com</AttributeValue>" + "\n";
myRequest += "</Attribute>" + "\n";
myRequest += "</Attributes>" + "\n";
myRequest += "<Attributes Category=\"urn:oasis:names:tc:xacml:3.0:attribute-category:resource\">" + "\n";
myRequest += "<Attribute AttributeId=\"urn:oasis:names:tc:xacml:1.0:resource:resource-id\" IncludeInResult=\"true\">" + "\n";
..
这是“getAttributesValues()”的关键输入,将返回一个国家代码(类似于 WSO2 示例代码中的角色 [blue, silver, gold] 定义 [可在此处获取https://svn.wso2.org/repos /wso2/carbon/platform/trunk/components/identity/org.wso2.carbon.identity.samples.entitlement.pip/ ]。
在示例中,我看到角色值所需的解析,例如“蓝色”是策略目标定义的一部分。
问题2: 目标部分中的这种放置是否需要调用动态 PIP 查找,每个请求一个,或者它也可以放置在策略的其他部分,例如在规则中?
我能够使用规则定义测试 PEP 到 PDP 的交互,仅通过定义静态变量,接收“许可”,我想更改为从 PIP 实现及其扩展获得的动态数据的规则,解决新的问题代码添加的字段。