处理 FIWARE 标头对Authzforce来说不是问题,它只是不是PEP 代理的默认行为。
Authzforce是一个完全通用的 PDP,如果您提供正确的 XACML 策略集并发送适当的数据,它将为您裁决。以下<Rule>
将permit
所有访问/v2/entities
时的fiware-header = "smartgondor"
<?xml version="1.0" encoding="UTF-8"?>
<Rule RuleId="ccxsx-xs-xsx-xsxs-xs" Effect="Permit">
<Description>Context Broker Access with Header=SmartGondor</Description>
<Target>
<AnyOf>
<AllOf>
<Match MatchId="urn:oasis:names:tc:xacml:3.0:function:string-starts-with">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/v2/entities</AttributeValue>
<AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:thales:xacml:2.0:resource:sub-resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true" />
</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">smartgondor</AttributeValue>
<AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="fiware-header" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true" />
</Match>
</AllOf>
</AnyOf>
</Target>
</Rule>
不幸的是,问题是默认情况下,PEP 代理 代码在向 Authzforce 发出请求时,只会传递以下现成的值:
如您所见,默认情况下不传递任何标题信息。
包括有关 FIWARE 标头的信息。您将不得不更改文件以从发送到 PEP 代理的请求中读取标头,并添加与请求一起发送到 Authzforce 的另一个属性。可以在Administrating-XACML 教程中找到此类自定义请求的更简单示例
保安人员只能在上午 9 点之前或下午 5 点之后敲响警铃,但查理可以随时敲钟
可以在教程代码库中找到向 Authzforce 发送请求的自定义代码- 请求中包含 Charlie 的用户名。