This commit is contained in:
stpeter 2012-01-10 12:27:16 -07:00
parent 115c188d2e
commit 668990211c
1 changed files with 19 additions and 12 deletions

View File

@ -9,7 +9,7 @@
<title>Service Directories</title> <title>Service Directories</title>
<abstract>This specification shows how to combine and extend a number of existing XMPP protocols for improved sharing of information about XMPP servers.</abstract> <abstract>This specification shows how to combine and extend a number of existing XMPP protocols for improved sharing of information about XMPP servers.</abstract>
&LEGALNOTICE; &LEGALNOTICE;
<number>xxxx</number> <number>0309</number>
<status>Experimental</status> <status>Experimental</status>
<type>Standards Track</type> <type>Standards Track</type>
<sig>Standards</sig> <sig>Standards</sig>
@ -21,6 +21,12 @@
<supersededby/> <supersededby/>
<shortname>NOT_YET_ASSIGNED</shortname> <shortname>NOT_YET_ASSIGNED</shortname>
&stpeter; &stpeter;
<revision>
<version>0.1</version>
<date>2012-01-10</date>
<initials>psa</initials>
<remark><p>Initial published version.</p></remark>
</revision>
<revision> <revision>
<version>0.0.3</version> <version>0.0.3</version>
<date>2012-01-09</date> <date>2012-01-09</date>
@ -52,6 +58,7 @@
<li>A server directory: xmpp.net</li> <li>A server directory: xmpp.net</li>
<li>A public XMPP service: jabber.org</li> <li>A public XMPP service: jabber.org</li>
</ul> </ul>
<p>Note: Although the entity that gathers information for a directory could be a client or a component, here we assume that it is a server ("xmpp.net").</p>
<p>These two entities use &xep0267;, &xep0030;, and &xep0292; in the following ways.</p> <p>These two entities use &xep0267;, &xep0030;, and &xep0292; in the following ways.</p>
<code><![CDATA[ <code><![CDATA[
Directory Server Directory Server
@ -82,7 +89,7 @@ Directory Server
| | | |
]]></code> ]]></code>
<section2 topic='Server Discovers Directory' anchor='gather-disco'> <section2 topic='Server Discovers Directory' anchor='gather-disco'>
<p>In order to determine the exact identity of the aggregator, the server sends a service discovery information request to the aggregator.</p> <p>In order to determine the exact identity of the directory, the server sends a service discovery information request to the directory.</p>
<example caption='Server Queries Directory'><![CDATA[ <example caption='Server Queries Directory'><![CDATA[
<iq type='get' <iq type='get'
from='jabber.org' from='jabber.org'
@ -107,19 +114,19 @@ Directory Server
</section2> </section2>
<section2 topic='Server Subscribes to Directory' anchor='gather-buddy'> <section2 topic='Server Subscribes to Directory' anchor='gather-buddy'>
<p>If the server wishes to have its information aggregated, it sends a presence subscription request to the aggregator as described in XEP-0267.</p> <p>If the server wishes to have its information aggregated, it sends a presence subscription request to the directory as described in XEP-0267.</p>
<example caption="Server Sends Subscription Request to Directory"><![CDATA[ <example caption="Server Sends Subscription Request to Directory"><![CDATA[
<presence from='jabber.org' <presence from='jabber.org'
to='xmpp.net' to='xmpp.net'
type='subscribe'/> type='subscribe'/>
]]></example> ]]></example>
<p>Upon receiving such the presence subscription request, the aggregator approves it.</p> <p>Upon receiving such the presence subscription request, the directory approves it.</p>
<example caption="Directory Sends Approval to Server"><![CDATA[ <example caption="Directory Sends Approval to Server"><![CDATA[
<presence from='xmpp.net' <presence from='xmpp.net'
to='jabber.org' to='jabber.org'
type='subscribed'/> type='subscribed'/>
]]></example> ]]></example>
<p>The aggregator also sends a subscription request to the server.</p> <p>The directory also sends a subscription request to the server.</p>
<example caption="Directory Sends Subscription Request to Server"><![CDATA[ <example caption="Directory Sends Subscription Request to Server"><![CDATA[
<presence from='xmpp.net' <presence from='xmpp.net'
to='jabber.org' to='jabber.org'
@ -207,9 +214,9 @@ Directory Server
</section2> </section2>
<section2 topic='Directory Queries Server' anchor='gather-query'> <section2 topic='Directory Queries Server' anchor='gather-query'>
<p>After the subscription handshake has been completed, the aggregator queries the server for information. There are two aspects: service discovery information and vCard information.</p> <p>After the subscription handshake has been completed, the directory queries the server for information. There are two aspects: service discovery information and vCard information.</p>
<section3 topic='Disco Query' anchor='gather-query-disco'> <section3 topic='Disco Query' anchor='gather-query-disco'>
<p>In order to determine the exact identity of the server, the aggregator sends a service discovery information request to the server.</p> <p>In order to determine the exact identity of the server, the directory sends a service discovery information request to the server.</p>
<example caption='Directory Queries Server'><![CDATA[ <example caption='Directory Queries Server'><![CDATA[
<iq type='get' <iq type='get'
from='xmpp.net' from='xmpp.net'
@ -235,10 +242,10 @@ Directory Server
]]></example> ]]></example>
<p>Note: If the server is a public node on the XMPP network, it includes a service discovery feature of "urn:xmpp:public-server". This feature is defined below.</p> <p>Note: If the server is a public node on the XMPP network, it includes a service discovery feature of "urn:xmpp:public-server". This feature is defined below.</p>
<p>Note: If the server allows &xep0077;, it includes a service discovery feature of "jabber:iq:register". If the server does not allow in-band registration but allows account registration at a website, it includes the registration URL in its vCard as described below.</p> <p>Note: If the server allows &xep0077;, it includes a service discovery feature of "jabber:iq:register". If the server does not allow in-band registration but allows account registration at a website, it includes the registration URL in its vCard as described below.</p>
<p>The foregoing examples show the gathering of disco#info data (identity and supported features). An aggregator MAY also gather disco#items data about components and other services associated with the base XMPP server at a domain.</p> <p>The foregoing examples show the gathering of disco#info data (identity and supported features). An directory MAY also gather disco#items data about components and other services associated with the base XMPP server at a domain.</p>
</section3> </section3>
<section3 topic='vCard Query' anchor='gather-query-vcard'> <section3 topic='vCard Query' anchor='gather-query-vcard'>
<p>In order to gather additional information about the server, the aggregator sends a vCard information request to the server.</p> <p>In order to gather additional information about the server, the directory sends a vCard information request to the server.</p>
<p>Note: Because vCard4 enables the XMPP community to more easily define extensions to vCard (e.g., for registration URLs), it is RECOMMENDED for servers to support &xep0292; in addition to, or instead of, &xep0054;.</p> <p>Note: Because vCard4 enables the XMPP community to more easily define extensions to vCard (e.g., for registration URLs), it is RECOMMENDED for servers to support &xep0292; in addition to, or instead of, &xep0054;.</p>
<example caption="Directory Requests vCard Data from Server"><![CDATA[ <example caption="Directory Requests vCard Data from Server"><![CDATA[
<iq from='xmpp.net' <iq from='xmpp.net'
@ -338,9 +345,9 @@ Directory Server
</section1> </section1>
<section1 topic='Security Considerations' anchor='security'> <section1 topic='Security Considerations' anchor='security'>
<p>Because a network information aggregator does not know about an XMPP server unless the administrator of the server initiates a presence subscription to the aggregator, information leakage is minimized.</p> <p>Because a service directory does not know about an XMPP server unless the administrator of the server initiates a presence subscription to the directory, information leakage is minimized.</p>
<p>Use of the "urn:xmpp:public-server" service discovery feature provides a way for an XMPP server to explicitly indicate that its information is public.</p> <p>Use of the "urn:xmpp:public-server" service discovery feature provides a way for an XMPP server to explicitly indicate that its information is public.</p>
<p>Use of the "directory/server" service discovery identity provides a way for a network information aggregator to explicitly indicate that it aggregates information obtained from XMPP servers that contact it.</p> <p>Use of the "directory/server" service discovery identity provides a way for a service directory to explicitly indicate that it gathers service information obtained from XMPP servers that contact it.</p>
</section1> </section1>
<section1 topic='IANA Considerations' anchor='iana'> <section1 topic='IANA Considerations' anchor='iana'>
@ -353,7 +360,7 @@ Directory Server
<p>The XMPP Registrar shall add this namespace to its registry at &NAMESPACES;.</p> <p>The XMPP Registrar shall add this namespace to its registry at &NAMESPACES;.</p>
</section2> </section2>
<section2 topic='Service Discovery Category/Type' anchor='registrar-discocat'> <section2 topic='Service Discovery Category/Type' anchor='registrar-discocat'>
<p>This document specifies that a network information aggregator is identified by the "directory" category and the "server" type within XMPP Service Discovery.</p> <p>This document specifies that a service directory is identified by the "directory" category and the "server" type within XMPP Service Discovery.</p>
<p>The XMPP Registrar shall add the "server" type to the "directory" category already listed in the registry at &DISCOCATEGORIES;. The registration is as follows.</p> <p>The XMPP Registrar shall add the "server" type to the "directory" category already listed in the registry at &DISCOCATEGORIES;. The registration is as follows.</p>
<code caption='Registry Submission'><![CDATA[ <code caption='Registry Submission'><![CDATA[
<category> <category>