XML Access Control Markup Language (XACML) provides XML documents with support for access control lists on the document and elements. Access control can be as fine-grained as a single element in an XML document. Access control supports four types of actions: create, read, write, and delete. It is organized around triplets of object, subject, and action.
An XACML object represents a single element or a set of elements in a XML document. The elements are specified through an XPATH expression. Let us look at a typical bank transaction document:
<?xml version="1.0"?>
<transaction>
<name>Sherry Ann Rattan</name>
<zipcode>06002</zipcode>>
<action>debit</action>
<merchant>Porsche</merchant>
<description>2003 Boxster</description>
<creditcardnumber>2222 111 232 23222</creditcardnumber>
<expiration>19770216</expiration>
<amount>98222.22</amount>
</transaction>
Let's say that the Web service has the ability to read the amount but does not have the ability to write to it. We would simply define the appropriate access control:
<?xml version="1.0"?>
<policy>
<xacl>
<object href="amount"/>
<rule>
<acl>
<subject>
<uid>WebServiceOne</uid>
</subject>
<action name="read" permission="grant"/>
<action name="write" permission="deny"/>
</acl>
</rule>
</xacl>
</policy>
This specification is controlled by the OASIS Technical Committee and may undergo several changes before it becomes a standard. The ability to apply field-level access-control lists coupled with encryption and other security options will make security integration between disparate Web services a lot easier. XACML will allow this to happen in a standards-based, open manner.