Создание обязательств 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?

Как правило, вы хотите запросить давление, а затем статус независимо или в виде множественного запроса.

Другие вопросы по тегам