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


person nammar    schedule 26.05.2014    source источник
comment
Просто уточнение. Я хотел бы позже обработать свое обязательство в коде, прочитав значения из каждого выражения присваивания и выполнив дальнейшую логику (написанную на уровне PEP).   -  person nammar    schedule 27.05.2014


Ответы (1)


Прежде всего, обратите внимание, что ваш запрос 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 выполнить действие просмотреть либо для статуса, либо для давления для ресурса с идентификатором status: из:нариман?

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

person David Brossard    schedule 26.05.2014
comment
Спасибо. На самом деле мне намеренно нужно более одного атрибута resource:type в одном запросе. Чтобы дать больше контекста проблеме, я (как субъект) хотел бы отправить запрос, который запрашивает более одного свойства (статус, давление) одного пациента, который в данном случае является нариманом. У меня есть схема базы данных, которая связывает нариман с ее свойствами в отношении один ко многим. - person nammar; 27.05.2014
comment
Итак, в приведенном выше примере строка: resourceType=resourceType заботится обо всех атрибутах типа ресурса? или нам нужно добавить отдельные выражения присваивания для каждого? - person nammar; 27.05.2014
comment
Он заботится обо всех значениях. Причина в том, что по умолчанию все атрибуты в XACML фактически являются наборами значений. - person David Brossard; 27.05.2014