【发布时间】:2015-09-24 21:16:32
【问题描述】:
使用“RedAttributeFinder”类的 PIP 扩展代码现在正在运行。它正确地将其声明注册到 WSO2 PDP 扩展控制台显示中。
我现在开始创建 XACML 策略,处理返回扩展程序提供的动态数据值的字段(例如名为“http://w3.red.com/subject/employeeCountryCode”的字段)。
数据查找的关键字段是:urn:oasis:names:tc:xacml:1.0:resource:resource-id
,它以电子邮件格式映射用户身份。
问题 1: 如何在 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 实现及其扩展获得的动态数据的规则,解决代码添加的新字段。
【问题讨论】:
标签: authorization wso2is access-control xacml abac