使用" RedAttributeFinder"的PIP扩展码上课现在正在工作。它正确地将其声明注册到WSO2 PDP扩展控制台显示屏。
我现在开始创建一个XACML策略,解决返回扩展程序提供的动态数据值的字段(例如名为" http://w3.red.com/subject/employeeCountryCode")的字段。
数据查找的关键字段是:urn:oasis:names:tc:xacml:1.0:resource:resource-id
,以电子邮件格式映射用户身份。
问题1:如何在" RedAttributeFinder"中完成“getAttributesValues”方法的调用。在WSO2开始时注册的课程。什么触发PDP进程(或其传入请求)的方法调用?
在示例代码中,以及在我的实现中,关键字段是resource-id,它作为PEP请求实现的一部分加载。
..
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";
..
这是&#34; getAttributesValues()&#34;的关键输入。并将返回一个国家代码(类似于WSO2示例代码中的角色[蓝色,银色,金色]定义[可在此处https://svn.wso2.org/repos/wso2/carbon/platform/trunk/components/identity/org.wso2.carbon.identity.samples.entitlement.pip/]。
在示例中,我看到角色值所需的分辨率,例如&#34; blue&#34;是策略目标定义的一部分。
问题2:此目标部分内的展示位置是否需要调用动态PIP查找,每个请求一个,或者也可以将其放置在策略的其他部分,例如在规则内?
我能够通过定义静态变量,接收&#34; permit&#34;来测试PEP到PDP与规则定义的交互,我希望将规则更改为从PIP获得的动态数据实现及其扩展,解决代码添加的新字段。
答案 0 :(得分:0)
在符合XACML标准的标准实现中,PDP将在其策略中找到属性指示符的任何时候调用PIP,该策略也由PIP发布(这意味着PIP必须通告它可以提供哪些属性,例如它提供了角色,公民身份......)。
PDP可以选择不调用PIP并使用属性缓存。在策略中放置属性是无关紧要的。无论属性是在目标内还是在条件中使用都无关紧要 - 至少根据规范 - 这就是Axiomatics,SunXACML和ATT引擎的工作方式。
干杯, 大卫。
答案 1 :(得分:0)
通过在log4j.properties文件中添加以下行,我在WSO2设置中找到了一个有用的调试选项:
log4j.logger.org.wso2.carbon.identity.entitlement=DEBUG
此命令开始跟踪发送到PIP的请求,包括调用PIP扩展类(按属性指示符)和返回数据字段。
这证实了PDP动态调用PIP以及Try-It功能。以下政策提供了预期的&#34;许可证&#34;并且&#34;拒绝&#34;结果,通过这确认了PIP扩展程序的正常运行。
下面是一个非常简单的策略,它使用PIP扩展代码测试,获取名为:employeeCountryCode的数据变量的值。
<强>政策强>
<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" PolicyId="RedLDAPPolicy1" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides" Version="1.0">
<Target>
</Target>
<Rule Effect="Permit" RuleId="Permit-Rule1">
<Target>
<AnyOf>
<AllOf>
<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">631</AttributeValue>
<AttributeDesignator AttributeId="http://w3.red.com/subject/employeeCountryCode" Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true">
</AttributeDesignator>
</Match>
</AllOf>
</AnyOf>
<AnyOf>
<AllOf>
<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">ldap</AttributeValue>
<AttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true">
</AttributeDesignator>
</Match>
</AllOf>
</AnyOf>
<AnyOf>
<AllOf>
<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">read</AttributeValue>
<AttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true">
</AttributeDesignator>
</Match>
</AllOf>
</AnyOf>
</Target>
</Rule>
<Rule Effect="Deny" RuleId="Deny-Rule">
</Rule>
</Policy>
请求强>
<Request xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" CombinedDecision="false" ReturnPolicyIdList="false">
<Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action">
<Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" IncludeInResult="false">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">read</AttributeValue>
</Attribute>
</Attributes>
<Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject">
<Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id" IncludeInResult="false">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">tony@br.red.com</AttributeValue>
</Attribute>
</Attributes>
<Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource">
<Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" IncludeInResult="true">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">ldap</AttributeValue>
</Attribute>
</Attributes>
</Request>