我的XACML
请求包含两个(resource:type)
属性和一个(resource:id)
属性:
<Request xmlns="urn:oasis:names:tc:xacml:2.0:context:schema:os" >
<Resource>
<Attribute AttributeId="resource:type" DataType="http://www.w3.org/2001/XMLSchema#string">
<AttributeValue>status</AttributeValue>
</Attribute>
<Attribute AttributeId="resource:type" DataType="http://www.w3.org/2001/XMLSchema#string">
<AttributeValue>pressure</AttributeValue>
</Attribute>
<Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#string">
<AttributeValue>status:of:nariman</AttributeValue>
</Attribute>
</Resource>
<Subject>
<Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id" DataType="http://www.w3.org/2001/XMLSchema#string">
<AttributeValue>1111</AttributeValue>
</Attribute>
</Subject>
<Action>
<Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id">
<AttributeValue>view</AttributeValue>
</Attribute>
</Action>
</Request>
我想用三个义务表达式定义一个义务,该义务表达式对应于上述每个资源属性。如何使用ALFA
?
答案 0 :(得分:0)
首先,请注意您的XACML请求实际上是XACML 2.0请求,而ALFA输出XACML 3.0策略集。因此,您的版本不匹配。
其次,在ALFA中建立一个包含两个属性的义务,您将执行以下操作:
namespace stackoverflow{
attribute subjectId{
category = subjectCat
id = "urn:oasis:names:tc:xacml:1.0:subject:subject-id"
type = string
}
attribute resourceId{
category = resourceCat
id = "urn:oasis:names:tc:xacml:1.0:resource:resource-id"
type = string
}
attribute resourceType{
category = resourceCat
id = "resource:type"
type = string
}
attribute actionId{
category = actionCat
id = "urn:oasis:names:tc:xacml:1.0:action:action-id"
type = string
}
obligation displayAttributes = "obligation.displayAttributes"
policy example{
apply firstApplicable
rule example{
permit
on permit{
obligation displayAttributes{
subjectId = subjectId
resourceId = resourceId
resourceType = resourceType
actionId = actionId
}
}
}
}
}
另一方面,您的XACML请求似乎存在语义错误。什么是英语等价物?现在你问:
用户 1111 可以在状态或压力中执行操作查看 id status:of:nariman ?
的资源
您通常希望独立或多次请求压力,然后询问状态。