Sự khác biệt lớn nhất giữa XACML 2.0 và XACML 3.0 cho ứng dụng khách của bạn là cấu trúc của các thuộc tính trong yêu cầu authz đã thay đổi đáng kể trong XACML 3.0.
Trong XACML 2.0, các thuộc tính đã được tổ chức thành các môn học, tài nguyên, môi trường hoặc các danh mục hành động sử dụng các thẻ phần tử 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>
Trong XACML 3.0, các loại này được chỉ định sử dụng XML thuộc tính thay cho các thẻ phần tử 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>
Yếu tố <Subject>
trong XACML 2.0 trở <Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject">
trong XACML 3.0, ví dụ. Ditto cho tài nguyên, môi trường và danh mục hành động.
Thay đổi cấu trúc này đơn giản hóa mô hình xử lý để xử lý yêu cầu và giúp dễ dàng mở rộng mô hình với các danh mục tùy chỉnh cụ thể cho từng ứng dụng hoặc tên miền mà không cần chạy xác thực lược đồ.
Có các kiểu dữ liệu và chức năng mới được xác định trong XACML 3.0 để sử dụng trong các định nghĩa chính sách. Kiểu dữ liệu AnyURI bây giờ khác với kiểu dữ liệu chuỗi. Một số thuật toán kết hợp 2.0 đã không còn được dùng để ủng hộ 3.0 tương đương mới xác định chính xác hơn cách các trạng thái không xác định truyền bá thông qua cây quyết định chính sách. Các thuật toán kết hợp cũ vẫn được bao gồm dưới dạng các tạo phẩm "thừa kế".
Yêu cầu và chính sách XACML 2.0 có thể được chuyển đổi về cơ học sang định dạng XACML 3.0 mà không làm mất thông tin. Việc chuyển đổi phản hồi 3.0 trở lại thành định dạng 2.0 có thể thực hiện được nếu bạn dính vào các câu trả lời đơn giản cho phép/từ chối.
tôi nhận được yêu cầu này tất cả các thời gian, vì vậy tôi đăng nó ở đây như một câu hỏi thường gặp về SO. – dthorpe