Extend catalogs to support

* restrictive catalogs
  * default items
  * empty items
This commit is contained in:
Kurt Zeilenga 2010-07-30 13:11:53 -07:00
parent 588280ab32
commit 8b8d7e2f7f
1 changed files with 36 additions and 20 deletions

View File

@ -38,9 +38,9 @@
</author> </author>
<revision> <revision>
<version>0.6</version> <version>0.6</version>
<date>2010-07-20</date> <date>2010-07-30</date>
<initials>kdz</initials> <initials>kdz</initials>
<remark><p>Minor editorial changes.</p></remark> <remark><p>Extend catalog handling. Minor editorial changes.</p></remark>
</revision> </revision>
<revision> <revision>
<version>0.5</version> <version>0.5</version>
@ -221,7 +221,7 @@
<section1 topic='Label Catalog Discovery' anchor='label-catalog'> <section1 topic='Label Catalog Discovery' anchor='label-catalog'>
<p>A client can request a catalog for a particular JID by sending <p>A client can request a catalog for a particular JID by sending
an catalog discovery request to the client's server. Where the JID a catalog discovery request to the client's server. Where the JID
is hosted by some other server, the client's server is expected to is hosted by some other server, the client's server is expected to
produce a suitable catalog (or fail the request). The client's server produce a suitable catalog (or fail the request). The client's server
may, as needed, query catalogs from other servers in order to may, as needed, query catalogs from other servers in order to
@ -234,6 +234,14 @@
JID.</p> JID.</p>
<p>It is RECOMMENDED the server publish catalogs of security label <p>It is RECOMMENDED the server publish catalogs of security label
for use by clients.</p> for use by clients.</p>
<p>If catalog is restrictive, as indicated by the restrictive attribute
with value of true, the client SHOULD use one of the labels
(or no label) offered by the catalog.</p>
<p>One and only one of the items may have a default attribute with
value of true. The client should default to this item in cases
where the user has not selected an item.</p>
<p>An item may have no label. Such an item offers a choice of
sending a stanza without a label.</p>
<p>Each catalog provided should only contain labels for which the client <p>Each catalog provided should only contain labels for which the client
is allowed to use (based upon the user's authorization) in a particular is allowed to use (based upon the user's authorization) in a particular
context (such as in chatroom). A catalog may not be include the context (such as in chatroom). A catalog may not be include the
@ -248,7 +256,7 @@
servers should advertise and clients should perform appropriate servers should advertise and clients should perform appropriate
discovery lookups on a per service basis.</p> discovery lookups on a per service basis.</p>
<p>To indicate the support for label catalog discovery, a server <p>To indicate the support for label catalog discovery, a server
advertises the <tt>urn:xmpp:sec-label:catalog:1</tt> feature. advertises the <tt>urn:xmpp:sec-label:catalog:2</tt> feature.
The following pair of examples illustrates this feature discovery.</p> The following pair of examples illustrates this feature discovery.</p>
<p>Each item in the catalog may contain a selector attribute. The <p>Each item in the catalog may contain a selector attribute. The
value of this attribute represents the item's placement in a value of this attribute represents the item's placement in a
@ -281,7 +289,7 @@ selector-value = (<item>"|")*<item>
id='disco1'> id='disco1'>
<query xmlns='http://jabber.org/protocol/disco#info'> <query xmlns='http://jabber.org/protocol/disco#info'>
... ...
<feature var='urn:xmpp:sec-label:catalog:1'/> <feature var='urn:xmpp:sec-label:catalog:2'/>
... ...
</query> </query>
</iq> </iq>
@ -291,15 +299,16 @@ selector-value = (<item>"|")*<item>
<example caption="Label Catalog request"><![CDATA[ <example caption="Label Catalog request"><![CDATA[
<iq type='get' id='cat1'> <iq type='get' id='cat1'>
<catalog xmlns='urn:xmpp:sec-label:catalog:1' to='example.com'/> <catalog xmlns='urn:xmpp:sec-label:catalog:2' to='example.com'/>
</iq> </iq>
]]></example> ]]></example>
<example caption="Label Catalog Get response"><![CDATA[ <example caption="Label Catalog Get response"><![CDATA[
<iq type='result' to='user@example.com/Work' id='cat1'> <iq type='result' to='user@example.com/Work' id='cat1'>
<catalog xmlns='urn:xmpp:sec-label:catalog:0' <catalog xmlns='urn:xmpp:sec-label:catalog:2'
to='example.com' name='Default' to='example.com' name='Default'
desc='an example set of labels'> desc='an example set of labels'
restrictive='false'>
<item selector="Classified|SECRET"> <item selector="Classified|SECRET">
<securitylabel xmlns='urn:xmpp:sec-label:0'> <securitylabel xmlns='urn:xmpp:sec-label:0'>
<displaymarking fgcolor='black' bgcolor='red'>SECRET</displaymarking> <displaymarking fgcolor='black' bgcolor='red'>SECRET</displaymarking>
@ -318,7 +327,7 @@ selector-value = (<item>"|")*<item>
</label> </label>
</securitylabel> </securitylabel>
</item> </item>
<item selector="Classified|RESTRICTED"> <item selector="Classified|RESTRICTED" default="true">
<securitylabel xmlns='urn:xmpp:sec-label:0'> <securitylabel xmlns='urn:xmpp:sec-label:0'>
<displaymarking fgcolor='black' bgcolor='aqua'>RESTRICTED</displaymarking> <displaymarking fgcolor='black' bgcolor='aqua'>RESTRICTED</displaymarking>
<label> <label>
@ -327,15 +336,7 @@ selector-value = (<item>"|")*<item>
</label> </label>
</securitylabel> </securitylabel>
</item> </item>
<item selector="Unclassified|UNCLASSIFIED"> <item selector="Unclassified|UNCLASSIFIED"/>
<securitylabel xmlns='urn:xmpp:sec-label:0'>
<displaymarking fgcolor='black' bgcolor='green'>UNCLASSIFIED</displaymarking>
<label>
<esssecuritylabel xmlns='urn:xmpp:sec-label:ess:0'
>MQMGASk=</esssecuritylabel>
</label>
</securitylabel>
</item>
</catalog> </catalog>
</iq> </iq>
]]></example> ]]></example>
@ -756,7 +757,7 @@ And by opposing end them?
<code><![CDATA[ <code><![CDATA[
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sl="urn:xmpp:sec-label:0" <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sl="urn:xmpp:sec-label:0"
xmlns="urn:xmpp:sec-label:catalog:1" targetNamespace="urn:xmpp:sec-label:catalog:1" xmlns="urn:xmpp:sec-label:catalog:2" targetNamespace="urn:xmpp:sec-label:catalog:1"
elementFormDefault="qualified"> elementFormDefault="qualified">
<xs:annotation> <xs:annotation>
@ -796,12 +797,25 @@ And by opposing end them?
</xs:annotation> </xs:annotation>
</xs:attribute> </xs:attribute>
<xs:attribute name="restrict" type="xs:boolean">
<xs:annotation>
<xs:documentation>Restrictive</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="selector" type="xs:string"> <xs:attribute name="selector" type="xs:string">
<xs:annotation> <xs:annotation>
<xs:documentation>User input selector</xs:documentation> <xs:documentation>User input selector</xs:documentation>
</xs:annotation> </xs:annotation>
</xs:attribute> </xs:attribute>
<xs:attribute name="default" type="xs:boolean">
<xs:annotation>
<xs:documentation>Default Item</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:element name="catalog"> <xs:element name="catalog">
<xs:annotation> <xs:annotation>
<xs:documentation>A Catalog of Labels</xs:documentation> <xs:documentation>A Catalog of Labels</xs:documentation>
@ -809,12 +823,13 @@ And by opposing end them?
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="item" maxOccurs="unbounded"> <xs:element name="item" minOccurs="0" maxOccurs="unbounded">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element ref="sl:securitylabel"/> <xs:element ref="sl:securitylabel"/>
</xs:sequence> </xs:sequence>
<xs:attribute ref="selector" use="optional"/> <xs:attribute ref="selector" use="optional"/>
<xs:attribute ref="default" use="optional"/>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
</xs:sequence> </xs:sequence>
@ -823,6 +838,7 @@ And by opposing end them?
<xs:attribute ref="desc" use="optional"/> <xs:attribute ref="desc" use="optional"/>
<xs:attribute ref="id" use="optional"/> <xs:attribute ref="id" use="optional"/>
<xs:attribute ref="size" use="optional"/> <xs:attribute ref="size" use="optional"/>
<xs:attribute ref="restrict" use="optional"/>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
</xs:schema> </xs:schema>