Создание обязательств XACML 3.0 с помощью плагина ALFA для Eclipse
У меня есть 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
?
1 ответ
Прежде всего, обратите внимание, что ваш запрос XACML на самом деле является запросом XACML 2.0, тогда как ALFA выводит набор политик XACML 3.0. Таким образом, у вас будет несоответствие версии.
Во-вторых, в ALFA для создания обязательства, которое будет содержать ваши два атрибута, вы должны сделать следующее:
namespace stackru{
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 просматривать действие или состояния или давления для ресурса с идентификатором status: of: nariman?
Как правило, вы хотите запросить давление, а затем статус независимо или в виде множественного запроса.