Самая большая разница между XACML 2.0 и XACML 3.0 для вашего клиентского приложения заключается в том, что структура атрибутов в запросе проверки подлинности значительно изменилась в XACML 3.0.
В XACML 2.0 атрибуты были организованы в категории темы, ресурса, среды или действия с использованием тегов элементов XML:
<?xml version="1.0" encoding="UTF-8"?>
<Request xmlns="urn:oasis:names:tc:xacml:2.0:context:schema:os"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:oasis:names:tc:xacml:2.0:context:schema:os access_control-xacml-2.0-context-schema-os.xsd">
<Subject>
<Attribute
AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"
DataType="http://www.w3.org/2001/XMLSchema#string">
<AttributeValue>Julius Hibbert</AttributeValue>
</Attribute>
</Subject>
<Resource>
<Attribute
AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
DataType="http://www.w3.org/2001/XMLSchema#anyURI">
<AttributeValue>http://medico.com/record/patient/BartSimpson</AttributeValue>
</Attribute>
</Resource>
<Action>
<Attribute
AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"
DataType="http://www.w3.org/2001/XMLSchema#string">
<AttributeValue>read</AttributeValue>
</Attribute>
</Action>
<Environment/>
</Request>
В XACML 3.0 эти категории указываются с использованием атрибутов XML вместо тегов элементов XML:
<?xml version="1.0" encoding="utf-8"?>
<Request xsi:schemaLocation="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17 http://docs.oasis-open.org/xacml/3.0/xacml-core-v3-schema-wd-17.xsd" ReturnPolicyIdList="false" CombinedDecision="false" xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject">
<Attribute IncludeInResult="false" AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Julius Hibbert</AttributeValue>
</Attribute>
</Attributes>
<Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource">
<Attribute IncludeInResult="false" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">http://medico.com/record/patient/BartSimpson</AttributeValue>
</Attribute>
</Attributes>
<Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action">
<Attribute IncludeInResult="false" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">read</AttributeValue>
</Attribute>
</Attributes>
<Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment" />
</Request>
Например, элемент <Subject>
в XACML 2.0 становится <Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject">
в XACML 3.0. То же самое для категорий ресурсов, среды и действий.
Это структурное изменение упрощает модель обработки для обработки запросов и упрощает расширение модели с помощью настраиваемых категорий для конкретных приложений или доменов без нарушения проверки схемы.
В XACML 3.0 определены новые типы данных и функции для использования в определениях политик. Тип данных AnyURI теперь отличается от строкового типа данных. Несколько алгоритмов объединения 2.0 устарели в пользу новых эквивалентов 3.0, которые более точно определяют, как неопределенные состояния распространяются вверх по дереву решений политики. Старые алгоритмы комбинирования по-прежнему включены как «устаревшие» артефакты.
Запросы и политики XACML 2.0 могут быть механически преобразованы в формат XACML 3.0 без потери информации. Преобразование ответа 3.0 обратно в формат 2.0 выполнимо, если вы придерживаетесь простых ответов «разрешить/запретить».
person
dthorpe
schedule
01.11.2011