RFC 7395RFC 7395: An Extensible Messaging and Presence Protocol (XMPP) Subprotocol for WebSocket <http://tools.ietf.org/html/rfc7395>. specifies how to make c2s connections over WebSocket. This XEP extends that to also support s2s connections over WebSocket.
Everything mentioned in RFC 7395RFC 7395: An Extensible Messaging and Presence Protocol (XMPP) Subprotocol for WebSocket <http://tools.ietf.org/html/rfc7395>. should be followed with the following changes:
Connection details are discovered by using Discovering Alternative XMPP Connection Methods (XEP-0156)XEP-0156: Discovering Alternative XMPP Connection Methods <https://xmpp.org/extensions/xep-0156.html>.
For c2s, RFC 7395RFC 7395: An Extensible Messaging and Presence Protocol (XMPP) Subprotocol for WebSocket <http://tools.ietf.org/html/rfc7395>. requires replacing the 'jabber:client' namespace with 'urn:ietf:params:xml:ns:xmpp-framing', for s2s, the 'jabber:server' namespace should be replaced with 'urn:ietf:params:xml:ns:xmpp-framing-server'.
wss (TLS) upgraded to a MUST be used, therefore SASL EXTERNAL authentication can be used as defined in XMPP CoreRFC 6120: Extensible Messaging and Presence Protocol (XMPP): Core <http://tools.ietf.org/html/rfc6120>.
Some hosting services only allow HTTPS proxies to access servers, meaning federating XMPP servers cannot be ran on these hosts unless s2s is accessible over HTTPS.
Identical to RFC 7395 Security Considerations.
A URN sub-namespace for framing of s2s Extensible Messaging and Presence
Protocol (XMPP) streams is defined as follows.
URI: urn:ietf:params:xml:ns:xmpp-framing-server
Specification: this document
Registrant Contact: IESG <iesg@ietf.org>
This document requires no interaction with the XMPP RegistrarThe XMPP Registrar maintains a list of reserved protocol namespaces as well as registries of parameters used in the context of XMPP extension protocols approved by the XMPP Standards Foundation. For further information, see <https://xmpp.org/registrar/>..