Największa różnica między XACML 2.0 i XACML 3.0 dla aplikacji klienckiej polega na tym, że struktura atrybutów w żądaniu authz zmieniła się znacząco w XACML 3.0.
W XACML 2.0 atrybuty zostały zorganizowane w temat, zasobów, środowiska, lub kategoriach działania przy użyciu tagów element 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>
W XACML 3.0, te kategorie są oznaczone za pomocą atrybutów XML zamiast tagów element 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>
elementu w XACML 2,0 <Subject>
się <Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject">
w XACML 3.0, na przykład. Podobnie jak w przypadku zasobów, środowiska i kategorii działań.
Ta zmiana strukturalna upraszcza model przetwarzania w celu obsługi żądań i ułatwia rozszerzenie modelu o niestandardowe kategorie specyficzne dla aplikacji lub domeny, bez konieczności sprawdzania poprawności schematu.
Istnieją nowe typy danych i funkcje zdefiniowane w XACML 3.0 do użycia w definicjach strategii. Typ danych AnyURI jest teraz inny niż typ danych łańcucha. Kilka algorytmów łączących 2.0 zostało wycofanych na rzecz nowych 3.0 ekwiwalentów, które definiują dokładniej, w jaki sposób niezdeterminowane stany rozprzestrzeniają się przez drzewo decyzyjne strategii. Stare algorytmy łączenia nadal są traktowane jako "starsze" artefakty.
Żądania i zasady XACML 2.0 mogą być mechanicznie konwertowane do formatu XACML 3.0 bez utraty informacji. Konwersja odpowiedzi 3.0 z powrotem na format 2.0 jest wykonalna, jeśli trzymasz się prostych zezwoleń/odmowy odpowiedzi.
zostanę poproszony ten cały czas, więc jestem umieszczenie go tutaj jako FAQ na SO. – dthorpe