La mayor diferencia entre XACML 2.0 y XACML 3.0 para su aplicación cliente es que la estructura de los atributos en la solicitud de autenticación ha cambiado significativamente en XACML 3.0.
En XACML 2.0, los atributos se organizaron en sujeto, recursos, medio ambiente, o las categorías de acción usando las etiquetas de elemento 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>
En XACML 3.0, estas categorías se indican usando los atributos XML en lugar de etiquetas de elemento 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>
El elemento <Subject>
en XACML 2.0 se convierte <Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject">
en XACML 3,0, por ejemplo. Lo mismo para las categorías de recursos, medioambiente y acción.
Este cambio estructural simplifica el modelo de procesamiento para el manejo de solicitudes y facilita la ampliación del modelo con categorías específicas de aplicación o específicas de dominio sin que se produzca una validación de esquema.
Hay nuevos tipos de datos y funciones definidas en XACML 3.0 para su uso en definiciones de políticas. El tipo de datos AnyURI ahora es distinto del tipo de datos de cadena. Varios de los 2.0 algoritmos de combinación han quedado en desuso en favor de los nuevos 3.0 equivalentes que definen con mayor precisión cómo los estados indeterminados se propagan a través del árbol de decisión de política. Los antiguos algoritmos de combinación todavía se incluyen como artefactos "heredados".
Las solicitudes y políticas de XACML 2.0 se pueden convertir mecánicamente a formato XACML 3.0 sin pérdida de información. La conversión de una respuesta 3.0 a formato 2.0 es factible si se atiene a respuestas simples de permiso/denegación.
que me hacen esto todo el tiempo, por lo que he publicado aquí como un FAQ en SO. – dthorpe