%ents; ]>
Best Practices for Use of SASL ANONYMOUS This document specifies best practices for use of the SASL ANONYMOUS mechanism in the context of client authentication with an XMPP server. &LEGALNOTICE; 0175 Active Informational Standards Council XMPP Core N/A &stpeter; 1.1 2007-11-07 psa

Recommended that node identifier be a UUID; recommended that trace data not be included.

1.0 2006-09-20 psa

Per a vote of the Jabber Council, advanced status to Active.

0.1 2006-02-09 psa

Initial version; modified flow to remove unecessary challenge.

0.0.1 2006-01-24 psa

First draft.

&RFC3920BISNOTE;

RFC 3920 allows the use of any SASL mechanism (see &rfc4422;) in XMPP authentication, including the SASL ANONYMOUS mechanism (see &rfc4505;). This document specifies a recommended protocol flow for such use.

Note: This document is provided for discussion purposes in order to clarify the usage of SASL ANONYMOUS in XMPP systems. It is not meant to supersede the text in RFC 3920, RFC 4422, or RFC 4505. However, the recommendations in this document may be folded into rfc3920bis.

RFC 3920 specifies that after an XMPP client authenticates with an XMPP server, it must bind a resource to the XML stream so that XML stanzas can be routed to the client. In essence there are three resource binding scenarios:

  1. The client specifies a desired resource identifier and the server accepts it.
  2. The client specifies a desired resource identifier but the server does not accept it, instead overruling the client and assigning a resource identifier.
  3. The client asks the server to assign a resource identifier and the server does so.

No matter which scenario is enacted, at the end of the process the server informs the client of its full JID (&FULLJID;). In particular, it might be helpful for an XMPP server to assign a full JID to the client (i.e., not just the resource identifier) if it authenticates with SASL ANONYMOUS, and to ensure that the "bare JID" portion (&BAREJID;) is unique in the context of the domain served by the server.

The method for ensuring the uniqueness of the node identifier is a matter of implementation. It is RECOMMENDED for the node identifier to be a UUID as specified in &rfc4122;.

Although RFC 4505 allows the initiating entity (client) to provide so-called "trace data" when authenticating via SASL ANONYMOUS, it is NOT RECOMMENDED to include trace data as the XML character data of the <auth/> element (instead, the <auth/> element SHOULD be empty). However, if trace data is included, the server MUST NOT use it for any purpose other than tracing (e.g., in server logs).

The RECOMMENDED protocol flow following TLS negotiation (refer to RFC 3920) is as follows:

  1. Client initiates stream to server.

    ]]>
  2. Server replies with stream header.

    ]]>
  3. Server advertises stream features.

    DIGEST-MD5 ANONYMOUS ]]>
  4. Client requests SASL ANONYMOUS mechanism.

    ]]>
  5. Server sends <success/>.

    ]]>
  6. Client opens new stream.

    ]]>
  7. Server tells client that resource binding is required.

    ]]>
  8. Client requests that server create a resource for it.

    ]]>
  9. Server replies with full JID.

    somenode@example.com/someresource ]]>

This document introduces no security considerations or concerns above and beyond those discussed in RFC 3920.

This document requires no interaction with &IANA;.

This document requires no interaction with the ®ISTRAR;.