OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

xacml message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Practicalities in the XACML 3.0 schema


All,

Currently the XACML 3.0 schema policy type looks like this:

    <xs:element name="Policy" type="xacml:PolicyType"/>
    <xs:complexType name="PolicyType">
        <xs:sequence>
            <xs:element ref="xacml:Description" minOccurs="0"/>
            <xs:element ref="xacml:PolicyIssuer" minOccurs="0"/>
            <xs:element ref="xacml:PolicyDefaults" minOccurs="0"/>
            <xs:element ref="xacml:CombinerParameters" minOccurs="0"/>
            <xs:element ref="xacml:Target"/>
            <xs:choice maxOccurs="unbounded">
                <xs:element ref="xacml:CombinerParameters" minOccurs="0"/>
                <xs:element ref="xacml:RuleCombinerParameters" 
minOccurs="0"/>
                <xs:element ref="xacml:VariableDefinition"/>
                <xs:element ref="xacml:Rule"/>
            </xs:choice>
            <xs:element ref="xacml:Obligations" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="PolicyId" type="xs:anyURI" use="required"/>
        <xs:attribute name="Version" type="xacml:VersionType" 
default="1.0"/>
        <xs:attribute name="RuleCombiningAlgId" type="xs:anyURI" 
use="required"/>
        <xs:attribute name="MaxDelegationDepth" type="xs:integer" 
use="optional"/>
    </xs:complexType>

Note that the xacml:CombinerParameters element occurs twice. (It's like 
that in XACML 2.0 as well.) Is there a reason for this? It seems 
redundant to me since the specification document says that if there are 
multiple CombinerParameters elements, they should be considered as  a 
single concatenated element.

It's a construct which makes at least JAXB fail on the schema, so unless 
there is a good reason for keeping it like this, I suggest we change it 
to make things easier for developers. The change I suggest is that we 
remove the first occurrence in the schema. Like this:

    <xs:element name="Policy" type="xacml:PolicyType"/>
    <xs:complexType name="PolicyType">
        <xs:sequence>
            <xs:element ref="xacml:Description" minOccurs="0"/>
            <xs:element ref="xacml:PolicyIssuer" minOccurs="0"/>
            <xs:element ref="xacml:PolicyDefaults" minOccurs="0"/>
            <xs:element ref="xacml:Target"/>
            <xs:choice maxOccurs="unbounded">
                <xs:element ref="xacml:CombinerParameters" minOccurs="0"/>
                <xs:element ref="xacml:RuleCombinerParameters" 
minOccurs="0"/>
                <xs:element ref="xacml:VariableDefinition"/>
                <xs:element ref="xacml:Rule"/>
            </xs:choice>
            <xs:element ref="xacml:Obligations" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="PolicyId" type="xs:anyURI" use="required"/>
        <xs:attribute name="Version" type="xacml:VersionType" 
default="1.0"/>
        <xs:attribute name="RuleCombiningAlgId" type="xs:anyURI" 
use="required"/>
        <xs:attribute name="MaxDelegationDepth" type="xs:integer" 
use="optional"/>
    </xs:complexType>

I am not sure if the right thing is to remove the first occurrence, 
rather than the second. My line of reasoning is that we want to make the 
Policy and PolicySet elements similar to each other. The PolicySet 
already contains only one occurrence of the CombinerParameters element 
in the schema, and it is within the choice element. So we should keep a 
similar format for the Policy. (And we shouldn't change the PolicySet 
since this way it will be the same as in 2.0, which is good since that 
means one less thing to trip on in the 2.0 -> 3.0 migration.)

Another issue with the XACML 3.0 schema: The schema contains a few 
default values for attributes. I have been thinking that maybe we should 
change these attributes to mandatory rather than defaults? The 
attributes are the <PolicySet> and <Policy> "Version" attributes and the 
"MustBePresent" attributes in <AttributeSelector> and <AttributeDesignator>

The problem with default XML attributes is that doing schema validation 
fills in them automatically, while parsing the XML without the schema 
does not do so. The default attributes are significant in an XML 
signature, which means that signatures will differ depending on whether 
the parsing was done with or without schema, unless the default 
attributes are filled in manually.

It's perhaps not a big deal, but schema validation does present a 
significant overhead and it would be nice if XACML could be parsed and 
signed without having to worry about the schema validation just because 
of the signature. And it's one less thing that can go wrong in product 
interoperability. :-)

What do you think?

And just to be clear: All proposed changes are for XACML 3.0. (Not the 
2.0 errata.)

Regards,
Erik



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]