annotate xmpp/xep-0355.xml @ 119:5d2eb2f61dc8

docker (base): Twisted and Wokkel are now installed with pip instead of apt, as Jessie version is too old for SàT
author Goffi <goffi@goffi.org>
date Tue, 08 Mar 2016 18:36:14 +0100
parents bbb900a768ea
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
1 <?xml version='1.0' encoding='UTF-8'?>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
2 <!DOCTYPE xep SYSTEM 'xep.dtd' [
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
3 <!ENTITY % ents SYSTEM 'xep.ent'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
4 %ents;
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
5 ]>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
6 <?xml-stylesheet type='text/xsl' href='xep.xsl'?>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
7 <xep>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
8 <header>
41
21d0d0ab7aa0 xeps: renamed published proto-xeps, and updated them according to published version
Goffi <goffi@goffi.org>
parents: 34
diff changeset
9 <title>Namespace Delegation</title>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
10 <abstract>This specification provides a way for XMPP server to delegate treatments for a namespace to an other entity</abstract>
41
21d0d0ab7aa0 xeps: renamed published proto-xeps, and updated them according to published version
Goffi <goffi@goffi.org>
parents: 34
diff changeset
11 &LEGALNOTICE;
21d0d0ab7aa0 xeps: renamed published proto-xeps, and updated them according to published version
Goffi <goffi@goffi.org>
parents: 34
diff changeset
12 <number>0355</number>
21d0d0ab7aa0 xeps: renamed published proto-xeps, and updated them according to published version
Goffi <goffi@goffi.org>
parents: 34
diff changeset
13 <status>Experimental</status>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
14 <type>Standards Track</type>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
15 <sig>Standards</sig>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
16 <approver>Council</approver>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
17 <dependencies>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
18 <spec>XMPP Core</spec>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
19 <spec>XEP-0004</spec>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
20 <spec>XEP-0297</spec>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
21 </dependencies>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
22 <supersedes/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
23 <supersededby/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
24 <shortname>NOT_YET_ASSIGNED</shortname>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
25 <author>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
26 <firstname>Jérôme</firstname>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
27 <surname>Poisson</surname>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
28 <email>goffi@goffi.org</email>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
29 <jid>goffi@jabber.fr</jid>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
30 </author>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
31
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
32 <revision>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
33 <version>0.2</version>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
34 <date>2014-03-21</date>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
35 <initials>jp</initials>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
36 <remark><p>Several updates according to feedbacks:</p>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
37 <ul>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
38 <li>Added attribute filtering, mainly to manage correctly MAM</li>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
39 <li>Simplification of configuration in admin mode: no more &IQ; negociation</li>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
40 <li>Delegations notifications to the managing entity are now done with a &MESSAGE; stanza</li>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
41 <li>Forwarding now use &xep0297; to avoid server to parse every stanza and a to have a cleaner separation</li>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
42 <li>The behaviour when managing entity is unavailable is specified</li>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
43 <li>Use of namespace in field var for client mode negociation is now mandatory</li>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
44 <li>Behaviour when managing a delegation kept between session in client mode, when managing entity is not available, is specified</li>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
45 <li>Implementation note added for in-order processing issue (thanks to Kurt Zeilenga for pointing this)</li>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
46 <li>Added an note for discovery nesting with attribute filtering</li>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
47 <li>Updated namespace to reflect incompatible changes</li>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
48 </ul>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
49 </remark>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
50 </revision>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
51
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
52 <revision>
41
21d0d0ab7aa0 xeps: renamed published proto-xeps, and updated them according to published version
Goffi <goffi@goffi.org>
parents: 34
diff changeset
53 <version>0.1</version>
21d0d0ab7aa0 xeps: renamed published proto-xeps, and updated them according to published version
Goffi <goffi@goffi.org>
parents: 34
diff changeset
54 <date>2014-12-18</date>
21d0d0ab7aa0 xeps: renamed published proto-xeps, and updated them according to published version
Goffi <goffi@goffi.org>
parents: 34
diff changeset
55 <initials>XEP Editor (mam)</initials>
21d0d0ab7aa0 xeps: renamed published proto-xeps, and updated them according to published version
Goffi <goffi@goffi.org>
parents: 34
diff changeset
56 <remark><p>Initial published version approved by the XMPP Council.</p></remark>
34
db9316a75306 XEP: updated privileged entity according to discussions following the council's veto (see http://mail.jabber.org/pipermail/standards/2014-December/029378.html):
Goffi <goffi@goffi.org>
parents: 33
diff changeset
57 </revision>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
58
34
db9316a75306 XEP: updated privileged entity according to discussions following the council's veto (see http://mail.jabber.org/pipermail/standards/2014-December/029378.html):
Goffi <goffi@goffi.org>
parents: 33
diff changeset
59 <revision>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
60 <version>0.0.1</version>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
61 <date>2014-11-13</date>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
62 <initials>jp</initials>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
63 <remark><p>First draft.</p></remark>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
64 </revision>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
65
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
66 </header>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
67 <section1 topic='Introduction' anchor='intro'>
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
68 <p>Some XMPP features must be offered by the server itself, or can't be available, that's the case of &xep0163; which is used in several places (e.g. bookmarks storage). But it can be desirable to use an external entity to manage some of these features, because it implements things that the server don't, or because it uses a special implementation useful in a particular case. Some people may also want to decentralize a feature on an entity under their control. This XEP try to solve these cases.<br/>Additionaly, a method to do generic treatments (independent of server) on stanza is also provided.</p>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
69 <p>This XEP is complementary to &xep0356; (and works in a similar way), although they can be used together or separately.</p>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
70 <p>Here are some use cases of namespace delegation:</p>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
71 <ul>
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
72 <li>use an external component for a PEP service because the server doesn't implement it or lacks some features</li>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
73 <li>decentralize a server feature to an entity under client control</li>
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
74 <li>make a component which react on new user registration, independent of server implementation</li>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
75 <li>server agnostic roster filtering</li>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
76 </ul>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
77 </section1>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
78 <section1 topic='Requirements' anchor='reqs'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
79 <p>Namespace delegation can be used in two modes:</p>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
80 <ul>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
81 <li><strong>admin</strong> mode, where delegation is specified by the server administrator.</li>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
82 <li><strong>client</strong> mode, where it can be requested by any user.</li>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
83 </ul>
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
84 <p>In <em>admin</em> mode, the managing entity manages stanza of the delegated namespace for all users registered on the server. The namespace delegation MUST be totally transparent for the managed entities.</p>
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
85 <p>In <em>client</em> mode, a managing entity MUST have an explicit authorization for any namespace he wants to use. Client SHOULD be able to check and revoke granted permissions, and if it's not possible, permissions MUST be revoked after a disconnection.</p>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
86 </section1>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
87 <section1 topic='Glossary' anchor='glossary'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
88 <ul>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
89 <li><strong>Delegated namespace</strong> the namespace being managed by an external entity.</li>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
90 <li><strong>Filtering attribute</strong> an attribute which must be present in first &IQ; child element to delegate the namespace.</li>
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
91 <li><strong>Managing entity</strong> the entity which actualy manages the delegated namespace.</li>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
92 <li><strong>Managed entity</strong> an entity which wants to have a namespace of its server delegated to a managing entity.</li>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
93 </ul>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
94 </section1>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
95 <section1 topic='Admin Mode Use Cases' anchor='admin_usecases'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
96
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
97 <section2 topic='Server Allows Namespaces Delegations' anchor='server_config'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
98 <p>Namespaces delegations are granted in the server configuration. Only &IQ; stanza namespaces can be delegated.</p>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
99 <p>A feature is delegated using:</p>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
100 <ol>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
101 <li>it's namespace: e.g. <em>'urn:xmpp:mam:0'</em></li>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
102 <li>zero or more filtering attribute (attributes which must be present in the initial &IQ; child element): e.g. <em>'node'</em></li>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
103 <li>the jid of the managing entity: e.g. <em>'managing.capulet.lit'</em></li>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
104 </ol>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
105 </section2>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
106
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
107 <section2 topic='Delegation Request Use Case' anchor='admin_perm'>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
108 <p>Once the managing entity is authenticated and stream is started, the server send it a &MESSAGE; stanza with a &lt;delegation/&gt; elements which MUST have the <strong>'urn:xmpp:delegation:1'</strong> namespace. This element contains &lt;delegated/&gt; elements which MUST contain a 'namespace' attribute indicating the delegated namespace. If there is additional attribute filtering, the &lt;delegated/&gt; can have children &lt;attribute/&gt; elements which MUST contain a 'name' attribute with the name of the filtering attribute.</p>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
109 <example caption='server advertise delegated namespaces'><![CDATA[
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
110 <message from='capulet.net' to='pubub.capulet.lit' id='12345'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
111 <delegation xmlns='urn:xmpp:delegation:1'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
112 <delegated namespace='urn:xmpp:mam:0'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
113 <attribute name='node' />
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
114 <delegated/>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
115 <delegated namespace='http://jabber.org/protocol/pubsub'/>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
116 </delegation>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
117 </message>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
118 ]]></example>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
119 <p>Here <em>pubsub.capulet.lit</em> will received all stanzas of pubsub namespace sent to <em>capulet.lit</em>. It will also receive MAM stanzas, but only if the 'node' attribute is present in &QUERY;.</p>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
120 </section2>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
121
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
122 <section2 topic='Server Forwards Delegated &IQ; Stanza' anchor='stanza_forward'>
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
123 <p>When a server receives a stanza for a delegated namespace which is either directed to him (no 'to' attribute, or 'to' attribute with its own JID), or directed to the bare JID of the sender (e.g. if 'from' attribute is "<em>juliet@capulet.lit/balcony</em>" and 'to' attribute is "<em>juliet@capulet.lit</em>"), it MUST forward it to the managing entity by replacing the 'to' attribute with the JID of the managing entity:</p>
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
124 <example caption='Juliet sends her mood to her server via PEP'><![CDATA[
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
125 <iq from='juliet@capulet.lit/balcony'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
126 id='pep1'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
127 type='set'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
128 <pubsub xmlns='http://jabber.org/protocol/pubsub'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
129 <publish node='http://jabber.org/protocol/mood'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
130 <item>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
131 <mood xmlns='http://jabber.org/protocol/mood'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
132 <annoyed/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
133 <text>curse my nurse!</text>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
134 </mood>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
135 </item>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
136 </publish>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
137 </pubsub>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
138 </iq>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
139 ]]></example>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
140 <p>The server gets this stanza, sees that this namespace is delegated to <em>pubsub.capulet.lit</em>, so it forwards it.</p>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
141 <p>To forward, an &IQ; stanza of type "set" is used which contain a &lt;delegation/&gt; element (with namespace<em>'urn:xmpp:delegation:1'</em>) which in turn contain a &lt;forwarded/&gt; element encapsulating the initial stanza, according to &xep0297;:</p>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
142
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
143 <example caption='server delegate the stanza to pubsub.capulet.lit'><![CDATA[
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
144 <iq from='capulet.lit'
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
145 to='pubsub.capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
146 id='delegate1'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
147 type='set'>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
148 <delegation xmlns='urn:xmpp:delegation:1'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
149 <forwarded xmlns='urn:xmpp:forward:0'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
150 <iq from='juliet@capulet.lit/balcony'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
151 id='pep1'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
152 type='set'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
153 <pubsub xmlns='http://jabber.org/protocol/pubsub'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
154 <publish node='http://jabber.org/protocol/mood'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
155 <item>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
156 <mood xmlns='http://jabber.org/protocol/mood'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
157 <annoyed/>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
158 <text>curse my nurse!</text>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
159 </mood>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
160 </item>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
161 </publish>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
162 </pubsub>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
163 </iq>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
164 </forwarded>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
165 </delegation>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
166 </iq>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
167 ]]></example>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
168 <p>The managing entity replies to the stanza by encapsulating its &IQ; result in the same way:</p>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
169 <example caption='pubsub.capulet.lit replies badly to juliet'><![CDATA[
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
170 <iq from='pubsub.capulet.lit'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
171 to='capulet.lit'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
172 id='delegate1'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
173 type='result'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
174 <delegation xmlns='urn:xmpp:delegation:1'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
175 <forwarded xmlns='urn:xmpp:forward:0'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
176 <iq to='juliet@capulet.lit/balcony'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
177 id='pep1'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
178 type='result'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
179 <pubsub xmlns='http://jabber.org/protocol/pubsub' />
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
180 </iq>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
181 </forwarded>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
182 </delegation>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
183 </iq>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
184 ]]></example>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
185
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
186 <p>Then the server MUST decapsulate the &IQ; result, MUST insure that the 'to' and the 'from' attribute corresponds to respectively the 'from' and the 'to' attributes of the initial stanza, MUST insure that the 'id' attribute of the decapsulated stanza is the same as the initial 'id' attribute and that 'type' is "result". If everything is alright, it can send the decapsulated stanza to Juliet.</p>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
187 <p>If the forwarded result from managing entity is bad (i.e. wrong 'to', 'from', 'id' or 'result' attributes), the server MUST send an &IQ; error with condition &lt;service-unavailable/&gt; to managed entity, and MAY close the connexion with managing entity.</p>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
188
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
189 <example caption='capulet.lit replies to Juliet'><![CDATA[
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
190 <iq to='juliet@capulet.lit/balcony'
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
191 id='pep1'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
192 type='result'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
193 <pubsub xmlns='http://jabber.org/protocol/pubsub' />
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
194 </iq>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
195 ]]></example>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
196
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
197 <p>The workflow is fully transparent for Juliet.</p>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
198 <p><strong>N.B.&#8321;:</strong> If the server encounter a delegated namespace and the managing entity is not available, it MUST return an &IQ; stanza of type "error" with an error condition of &lt;service-unavailable/&gt;</p>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
199 <p><strong>N.B.&#8322;:</strong> If the server encounter a delegated namespace but the filtering attribute does not match, it MUST follow its normal behaviour, i.e. it must follow the same behaviour it would have had if the namespace was not delegated at all</p>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
200 <section3 topic='Stanzas from managing entity' anchor='managing_entity_stanzas'>
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
201 <p>If a stanza is sent by the managing entity on a managed namespace, the server MUST NOT forward it. This way, the managing entity can use privileged entity to do special treatments.</p>
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
202 <p>In the following examples, <em>juliet@capulet.lit</em> has its "<em>jabber:iq:roster</em>" namespace delegated to <em>filter.capulet.lit</em>. <em>filter.capulet.lit</em> is a server agnostic component which filters allowed entities (which can be added to a roster), and sort them in enforced groups.</p>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
203
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
204 <example caption='Juliet adds Romeo to her roster'><![CDATA[
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
205 <iq from='juliet@capulet.lit/balcony'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
206 id='roster1'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
207 type='set'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
208 <query xmlns='jabber:iq:roster'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
209 <item jid='romeo@montaigu.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
210 name='My Romeo'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
211 </item>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
212 </query>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
213 </iq>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
214 ]]></example>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
215
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
216 <example caption='server forwards stanza to managing entity'><![CDATA[
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
217 <iq from='capulet.lit'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
218 to='pubsub.capulet.lit'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
219 id='delegate1'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
220 type='set'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
221 <delegation xmlns='urn:xmpp:delegation:1'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
222 <forwarded xmlns='urn:xmpp:forward:0'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
223 <iq from='juliet@capulet.lit/balcony'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
224 id='roster1'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
225 type='set'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
226 <query xmlns='jabber:iq:roster'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
227 <item jid='romeo@montaigu.lit'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
228 name='My Romeo'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
229 </item>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
230 </query>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
231 </iq>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
232 </forwarded>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
233 </delegation>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
234 </iq>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
235 ]]></example>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
236
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
237 <p><em>filter.capulet.lit</em> accepts to add Romeo, but all JIDs with a <em>montaigu.lit</em> must be in a "Rivals" group, so it first returns a success result (Romeo is accepted).</p>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
238 <example caption='filtering component accept Romeo'><![CDATA[
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
239 <iq from='pubsub.capulet.lit'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
240 to='capulet.lit'
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
241 id='delegate1'
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
242 type='result'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
243 <delegation xmlns='urn:xmpp:delegation:1'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
244 <forwarded xmlns='urn:xmpp:forward:0'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
245 <iq to='juliet@capulet.lit/balcony'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
246 id='roster1'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
247 type='result' />
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
248 </forwarded>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
249 </delegation>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
250 </iq>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
251 ]]></example>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
252 <example caption='server decapsulate and send the result with the initial id'><![CDATA[
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
253 <iq to='juliet@capulet.lit/balcony'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
254 id='roster1'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
255 type='result' />
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
256 ]]></example>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
257
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
258 <p>At this stade, the entity is accepted, but not added to the roster. <em>filter.capulet.lit</em> is also a privileged entity which can manage "<em>jabber:iq:roster</em>", so it uses this ability to add Romeo in the enforced group:</p>
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
259 <example caption='filter.capulet.lit uses privileged entity to add Romeo'><![CDATA[
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
260 <iq to='juliet@capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
261 from='filter.capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
262 id='roster2'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
263 type='set'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
264 <query xmlns='jabber:iq:roster'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
265 <item jid='romeo@montaigu.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
266 name='My Romeo'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
267 <group>Rivals</group>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
268 </item>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
269 </query>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
270 </iq>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
271 ]]></example>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
272 <p>The namespace is delegated, but as the stanza is from the managing entity, the server manages it normally. The entity is also privileged, so it can change the stanza of Juliet, the server accepts:</p>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
273
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
274 <example caption='server accept new entity in roster'><![CDATA[
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
275 <iq to='filter.capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
276 from='juliet@capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
277 id='roster2'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
278 type='result'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
279 ]]></example>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
280
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
281 <p>The server will then send the roster pushes (with the enforced group) normally.</p>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
282
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
283 </section3>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
284
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
285 </section2>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
286
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
287
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
288 </section1>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
289
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
290 <section1 topic='Client Mode Use Cases' anchor='client_usecases'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
291 <section2 topic='Client Delegation Request Use Case' anchor='client_delegation'>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
292 <p>In <em>client</em> mode, the managing entity is not certified by the server administrator, so the delegation MUST be <strong>explicitly</strong> allowed by the managed entity. This is initiated by the managing entity (it can be after an interaction with a managed entity, like a subscription).</p>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
293 <p>To request delegation for a particular entity, the managing entity MUST have an &IQ; stanza with <em>'urn:xmpp:delegation:1'</em> namespace. The &QUERY; element MUST have a 'to' attribute which specify the entity it wants to manage.</p>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
294 <p>Namespace delegations are asked with a &lt;delegate/&gt; element, which MUST contain a 'namespace' attribute set to the requested namespace.</p>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
295
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
296 <p>If an entity want to manage PEP service for Juliet, it can ask the delegation like this:
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
297 </p>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
298 <example caption='managing entity asks for namespace delegation for one particular entity'><![CDATA[
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
299 <iq from='pubsub.montaigu.lit' to='capulet.lit' type='get' id='delegation1'>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
300 <query xmlns='urn:xmpp:delegation:1'
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
301 to='juliet@capulet.lit'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
302 <delegate namespace='http://jabber.org/protocol/pubsub'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
303 </query>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
304 </iq>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
305 ]]></example>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
306 <p>Once received the delegation request, the server ask to the client if it grants access to the requested namespace using &xep0004;. The server use a challenge which it MUST have generated itself.
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
307 </p>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
308 <example caption='server asks user for the namespace delegation'><![CDATA[
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
309 <message from='capulet.lit' to='juliet@capulet.lit/balcony'>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
310 <body>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
311 pubsub.montaigu.lit wants to manage a feature normally managed by the server.
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
312 Do you allow it to manage the following features?
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
313
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
314 Be careful! According management to an entity is a serious thing,
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
315 think twice that you can trust the entity before doing this.
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
316 </body>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
317 <x xmlns='jabber:x:data' type='form'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
318 <title>Delegation request</title>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
319 <instructions>pubsub.montaigu.lit wants to manage the following features:
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
320 Do you allow it?</instructions>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
321 <field type='hidden' var='challenge'><value>5439123</value></field>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
322 <field type='hidden' var='FORM_TYPE'>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
323 <value>urn:xmpp:delegation:1</value>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
324 </field>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
325 <field type='list-single'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
326 label='Manage PubSub (http://jabber.org/protocol/pubsub)'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
327 var='http://jabber.org/protocol/pubsub'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
328 <value>0</value>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
329 <option label='No'><value>0</value></option>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
330 <option label='Yes'><value>1</value></option>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
331 </field>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
332 </x>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
333 </message>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
334 ]]></example>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
335 <p>The server SHOULD include a warning message, SHOULD translate the namespace to human friendly names (and MAY keep the original namespace in addition) and MUST set the default value to '<strong>0</strong>' (permission refused). The server MUST use namespaces as field var, so a client can use them to have a customized display.</p>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
336 <p>The client can then answer to the form:</p>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
337 <example caption='client answer to the form'><![CDATA[
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
338 <message from='juliet@capulet.lit/balcony' to='capulet.lit'>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
339 <x xmlns='jabber:x:data' type='submit'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
340 <field var='FORM_TYPE'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
341 <value></value>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
342 </field>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
343 <field var='challenge'><value>5439123</value></field>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
344 <field var='http://jabber.org/protocol/pubsub'><value>1</value></field>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
345 </x>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
346 </message>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
347 ]]></example>
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
348 <p>Here Juliet allows <em>pubsub.montaigu.lit</em> to manage the PubSub (and then PEP) service.</p>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
349
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
350
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
351 <p>Finaly, the server notifies the entity of the granted delegation. It do this in the same way as for <link url='#admin_perm'>admin mode</link>, except that the &lt;delegation/&gt; element has an attitional 'to' attribute set to the managed entity bare jid:</p>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
352 <example caption='server advertise delegated namespaces for juliet'><![CDATA[
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
353 <message from='capulet.net' to='pubub.capulet.lit' id='6789'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
354 <delegation xmlns='urn:xmpp:delegation:1' to='juliet@capulet.lit'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
355 <delegated namespace='http://jabber.org/protocol/pubsub'/>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
356 </delegation>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
357 </message>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
358 ]]></example>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
359 <p>The managing entity can now manage the namespace the same way as in <link url='#stanza_forward'>admin mode</link>.</p>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
360 </section2>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
361
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
362 </section1>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
363
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
364 <section1 topic='Configuration' anchor='configuration'>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
365 <p>Server SHOULD provide a way for clients to check already delegated namespaces, and revoke them by using &xep0050; on the well-defined command node <strong>'urn:xmpp:delegation:1#configure'</strong>.</p>
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
366 <p>If present, the configuration commands MUST allow at least to check delegations granted to a managing entity, and to revoke them. A server MAY offer an option to keep delegations from one session to an other (see <link url='#rules'>business rules</link>).</p>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
367 </section1>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
368
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
369 <section1 topic='Discovering Support' anchor='disco'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
370 <section2 topic='Announce' anchor='disco_announce'>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
371 <p>If a server or an entity supports the namespace delegation protocol, it MUST report that fact by including a service discovery feature of "<em>urn:xmpp:delegation:1</em>" in response to a &xep0030; information request:</p>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
372 <example caption="service discovery information request"><![CDATA[
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
373 <iq from='pubsub.capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
374 id='disco1'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
375 to='capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
376 type='get'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
377 <query xmlns='http://jabber.org/protocol/disco#info'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
378 </iq>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
379 ]]></example>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
380 <example caption="service discovery information response"><![CDATA[
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
381 <iq from='capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
382 id='disco1'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
383 to='pubsub.capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
384 type='result'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
385 <query xmlns='http://jabber.org/protocol/disco#info'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
386 ...
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
387 <feature var='urn:xmpp:delegation:1'/>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
388 ...
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
389 </query>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
390 </iq>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
391 ]]></example>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
392 </section2>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
393 <section2 topic='Nesting' anchor='disco_nesting'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
394 <section3 topic='General Case'>
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
395 <p>When a server delegates a namespace to a managing entity, the later can have particular features which must be advertised by the former with disco protocol.</p>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
396 <p>This is done by using a disco node, which is done the following way: if pubsub.capulet.int manages pubsub namespace, it MUST report that fact in discovery feature, and have a '<strong>urn:xmpp:delegation:1::http://jabber.org/protocol/pubsub</strong>' node which reports the managed features.</p><p>The node name is obtained by concatenating this XEP namespace (<strong>urn:xmpp:delegation:1</strong>), a '<strong>::</strong>' separator, and the delegated namespace (here <strong>http://jabber.org/protocol/pubsub</strong>).<br/>The server MUST advertise the result in its own discovery answer, and MUST ignore features of its internal component (here internal PubSub service).</p>
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
397 <p>In the following example, the capulet.int server delegates its internal PEP component to pubsub.capulet.int. capulet.int only supports REQUIRED PubSub features and auto-create, while pubsub.capulet.int supports REQUIRED PubSub features and publish-options, but not auto-create. <br/>juliet@capulet.int asks its server what it is capable of, she is specially interested in PubSub capabilities.</p>
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
398 <example caption="Juliet asks her server its available features"><![CDATA[
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
399 <iq from='juliet@capulet.lit/balcony'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
400 id='disco1'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
401 to='capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
402 type='get'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
403 <query xmlns='http://jabber.org/protocol/disco#info'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
404 </iq>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
405 ]]>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
406 </example>
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
407 <p>Server delegates its PubSub namespace to <em>pubsub.capulet.lit</em>, so it asks its available features for this namespace like this:</p>
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
408 <example caption="capulet.lit requests disco infos for pubsub namespace to pubsub.capulet.lit"><![CDATA[
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
409 <iq from='capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
410 id='disco2'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
411 to='pubsub.capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
412 type='get'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
413 <query xmlns='http://jabber.org/protocol/disco#info'
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
414 node='urn:xmpp:delegation:1::http://jabber.org/protocol/pubsub'/>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
415 </iq>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
416 ]]>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
417 </example>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
418 <p>Note that in real situation, server has probably this information already in cache (see <link url='#impl'>Implementation Notes</link>).<br/>
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
419 <em>pubsub.capulet.lit</em> returns its available features:</p>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
420 <example caption="pubsub.capulet.lit returns features to nest"><![CDATA[
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
421 <iq from='pubsub.capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
422 id='disco2'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
423 to='capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
424 type='result'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
425 <query xmlns='http://jabber.org/protocol/disco#info'
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
426 node='urn:xmpp:delegation:1::http://jabber.org/protocol/pubsub'>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
427 <feature var='http://jabber.org/protocol/pubsub'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
428 <feature var='http://jabber.org/protocol/pubsub#publish'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
429 <feature var='http://jabber.org/protocol/pubsub#subscribe'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
430 <feature var='http://jabber.org/protocol/pubsub#publish-options'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
431 </query>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
432 </iq>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
433 ]]>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
434 </example>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
435 <p>Server include the results in its own discovery info results:</p>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
436 <example caption="capulet.lit return disco info including features from pubsub.capulet.lit"><![CDATA[
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
437 <iq from='capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
438 id='disco1'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
439 to='juliet@capulet.lit/balcony'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
440 type='result'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
441 <query xmlns='http://jabber.org/protocol/disco#info'
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
442 node='urn:xmpp:delegation:1::http://jabber.org/protocol/pubsub'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
443 <feature var='urn:xmpp:delegation:1'/>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
444 ...
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
445 <feature var='http://jabber.org/protocol/pubsub'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
446 <feature var='http://jabber.org/protocol/pubsub#publish'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
447 <feature var='http://jabber.org/protocol/pubsub#subscribe'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
448 <feature var='http://jabber.org/protocol/pubsub#publish-options'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
449 ...
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
450 </query>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
451 </iq>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
452 ]]>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
453 </example>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
454 <p>Note that '<em>http://jabber.org/protocol/pubsub#auto-create</em>' is not available.</p>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
455 <p><strong>N.B.:</strong> In the special case of attribute filtering, the server still display managing entity's features for the whole delegated namespace instead of its own internal ones.</p>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
456 </section3>
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
457 <section3 topic='Rediction Of Bare JID Disco Info'>
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
458 <p>As an entity may ask for discovery information on bare JID, which the server would answer, the managing entity must be able to send this kind of information.</p>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
459 <p>To do so, the mechanism is the same as for server features, but the separator is '<strong>:bare:</strong>' instead of '<strong>::</strong>':</p>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
460
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
461 <example caption="Juliet asks features for its own bare JID"><![CDATA[
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
462 <iq from='juliet@capulet.lit/balcony'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
463 id='disco3'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
464 to='juliet@capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
465 type='get'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
466 <query xmlns='http://jabber.org/protocol/disco#info'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
467 </iq>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
468 ]]>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
469 </example>
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
470 <p>Server delegate its PubSub namespace to <em>pubsub.capulet.lit</em>, so it ask its available features for this namespace like this:</p>
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
471 <example caption="capulet.lit requests disco infos for pubsub namespace to pubsub.capulet.lit"><![CDATA[
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
472 <iq from='capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
473 id='disco4'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
474 to='pubsub.capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
475 type='get'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
476 <query xmlns='http://jabber.org/protocol/disco#info'
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
477 node='urn:xmpp:delegation:1:bare:http://jabber.org/protocol/pubsub'/>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
478 </iq>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
479 ]]>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
480 </example>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
481 <p>As for general case, server has probably <link url='#impl'>this information already in cache</link>.<br/>
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
482 <em>pubsub.capulet.lit</em> returns its available features:</p>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
483 <example caption="pubsub.capulet.lit returns features to nest"><![CDATA[
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
484 <iq from='pubsub.capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
485 id='disco4'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
486 to='capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
487 type='result'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
488 <query xmlns='http://jabber.org/protocol/disco#info'
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
489 node='urn:xmpp:delegation:1:bare:http://jabber.org/protocol/pubsub'>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
490 <identity category='pubsub' type='pep'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
491 <feature var='http://jabber.org/protocol/pubsub#access-presence'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
492 <feature var='http://jabber.org/protocol/pubsub#auto-create'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
493 <feature var='http://jabber.org/protocol/pubsub#auto-subscribe'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
494 <feature var='http://jabber.org/protocol/pubsub#config-node'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
495 <feature var='http://jabber.org/protocol/pubsub#create-and-configure'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
496 <feature var='http://jabber.org/protocol/pubsub#create-nodes'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
497 <feature var='http://jabber.org/protocol/pubsub#filtered-notifications'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
498 <feature var='http://jabber.org/protocol/pubsub#persistent-items'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
499 <feature var='http://jabber.org/protocol/pubsub#publish'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
500 <feature var='http://jabber.org/protocol/pubsub#retrieve-items'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
501 <feature var='http://jabber.org/protocol/pubsub#subscribe'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
502 ...
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
503 </query>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
504 </iq>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
505 ]]>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
506 </example>
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
507 <p>Then the server returns the answer to Juliet, as in general case, with requested bare JID in 'from' field.</p>
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
508 <example caption="capulet.lit returns disco info to Juliet"><![CDATA[
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
509 <iq from='juliet@capulet.lit'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
510 id='disco3'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
511 to='juliet@capulet.lit/balcony'
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
512 type='result'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
513 <query xmlns='http://jabber.org/protocol/disco#info'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
514 <identity category='account' type='registered'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
515 <identity category='pubsub' type='pep'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
516 <feature var='http://jabber.org/protocol/pubsub#access-presence'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
517 <feature var='http://jabber.org/protocol/pubsub#auto-create'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
518 <feature var='http://jabber.org/protocol/pubsub#auto-subscribe'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
519 <feature var='http://jabber.org/protocol/pubsub#config-node'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
520 <feature var='http://jabber.org/protocol/pubsub#create-and-configure'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
521 <feature var='http://jabber.org/protocol/pubsub#create-nodes'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
522 <feature var='http://jabber.org/protocol/pubsub#filtered-notifications'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
523 <feature var='http://jabber.org/protocol/pubsub#persistent-items'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
524 <feature var='http://jabber.org/protocol/pubsub#publish'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
525 <feature var='http://jabber.org/protocol/pubsub#retrieve-items'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
526 <feature var='http://jabber.org/protocol/pubsub#subscribe'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
527 ...
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
528 </query>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
529 </iq>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
530 ]]>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
531 </example>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
532
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
533 </section3>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
534 </section2>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
535 </section1>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
536
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
537 <section1 topic='Business Rules' anchor='rules'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
538 <ol>
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
539 <li>In client mode, server MAY keep delegations granted to an entity by a client from one session to an other, but if it does so, it MUST provide configuration like explained in the <link url='#configuration'>suitable section</link>. If server offers this feature, it SHOULD add a field directly in configuration commands.</li>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
540 <li>If a client can't check or revoke delegations (i.e. it doesn't support &xep0050;) when granting them, the server MUST NOT keep granted delegations from one session to an other, and delegations will be asked on each new session.</li>
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
541 <li>If delegations are changed during a session, server MUST notify managing entity of the new delegations, like in <link url='#client_delegation'>client delegation request use case</link>.</li>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
542 <li>If delegations are kept between sessions in client mode, and the managing entity is not available, the server MUST return an &IQ; error with condition &lt;service-unavailable/&gt; when a delegated namespace is requested, like explained in <link url='#stanza_forward'>"Server Forwards Delegated &IQ; Stanza" section</link>.</li>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
543 <li>The namespace of this XEP (<strong>urn:xmpp:delegation:1</strong>) MUST NOT be delegated. If an entity requests it, the server MUST return a &forbidden; error.</li>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
544 </ol>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
545 </section1>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
546 <section1 topic='Implementation Notes' anchor='impl'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
547 <ol>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
548 <li>As admin mode is far more easy to implement than client mode, and client mode may impact performances, a server MAY choose to only implement the former.</li>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
549 <li>Because of the performance impact, a server SHOULD ask for <link url='#disco_nesting'>disco features to nest</link> to managing entity when delegation is accepted, and keep them in cache.</li>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
550 <li>&rfc6120; section 10.1 require in-order processing of stanzas, which may be problematic for this extension: either the server blocks the traffic until the managing entity answer - which can lead to severe performance impact -, or the server doesn't block and may loose order. The recommended way is to not block the traffic while waiting for managing entity answer to avoid performance issues. A future version of this XEP may include an attribute to request traffic blocking. In admin mode the server implementation MAY chooses to have a blocking option (which SHOULD be per namespace, not global).
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
551 </li>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
552 </ol>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
553 </section1>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
554 <section1 topic='Security Considerations' anchor='security'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
555 <ol>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
556 <li>Managing entity can manage sensitive data, <em>admin</em> delegation should be granted carefuly, only if you absolutely trust the entity.</li>
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
557 <li>A server MAY choose to filter allowed namespaces. In this case, it MUST always set the allowed type of filtered namespaces to <strong>0</strong>.</li>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
558
32
a3f262d5b594 xeps: typos/style fixes
souliane <souliane@mailoo.org>
parents: 30
diff changeset
559 <li>In case of filtering, a whitelist system is more secure and SHOULD be prefered to a blacklist (idealy, configuration would allow no filtering, whitelist filtering and blacklist filtering).</li>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
560 </ol>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
561 </section1>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
562 <section1 topic='IANA Considerations' anchor='iana'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
563 <p>This document requires no interaction with &IANA;.</p>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
564 </section1>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
565 <section1 topic='XMPP Registrar Considerations' anchor='registrar'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
566 <section2 topic='Protocol Namespaces' anchor='ns'>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
567 <p>The &REGISTRAR; includes 'urn:xmpp:delegation:1' in its registry of protocol namespaces (see &NAMESPACES;).</p>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
568 <ul>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
569 <li>urn:xmpp:delegation:1</li>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
570 </ul>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
571 </section2>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
572 <section2 topic='Protocol Versioning' anchor='registrar-versioning'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
573 &NSVER;
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
574 </section2>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
575 </section1>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
576 <section1 topic='XML Schema' anchor='schema'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
577 <code><![CDATA[
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
578 <?xml version='1.0' encoding='UTF-8'?>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
579
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
580 <xs:schema
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
581 xmlns:xs='http://www.w3.org/2001/XMLSchema'
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
582 targetNamespace='urn:xmpp:delegation:1'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
583 xmlns='urn:xmpp:delegation:1'
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
584 elementFormDefault='qualified'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
585
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
586 <xs:import namespace='urn:xmpp:forward:0'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
587 schemaLocation='http://xmpp.org/schemas/forward.xsd'/>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
588
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
589 <xs:element name='query'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
590 <xs:complexType>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
591 <xs:attribute name='to' use='required' type='xs:string'/>
41
21d0d0ab7aa0 xeps: renamed published proto-xeps, and updated them according to published version
Goffi <goffi@goffi.org>
parents: 34
diff changeset
592 </xs:attribute>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
593 <xs:element name='delegate'
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
594 maxOccurs='unbounded'>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
595 <xs:complexType>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
596 <xs:attribute name='namespace' use='required' type='xs:string'/>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
597 </xs:complexType>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
598 </xs:element>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
599 </xs:complexType>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
600 </xs:element>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
601
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
602 <xs:element name='delegation'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
603 <xs:complexType>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
604 <xs:element ref='urn:xmpp:forward:0' minOccurs='0' maxOccurs='1' />
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
605 <xs:element name='delegated'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
606 minOccurs='0'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
607 maxOccurs='unbounded'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
608 <xs:complexType>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
609 <xs:attribute name='namespace' use='required' type='xs:string'/>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
610 <xs:element name='attribute'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
611 minOccurs='0'
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
612 maxOccurs='unbounded'>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
613 <xs:complexType>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
614 <xs:attribute name='name' use='required' type='xs:string'/>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
615 </xs:complexType>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
616 </xs:element>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
617 </xs:complexType>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
618 </xs:element>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
619 </xs:complexType>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
620 </xs:element>
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
621
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
622 </xs:schema>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
623 ]]></code>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
624 </section1>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
625 <section1 topic='Acknowledgements' anchor='acks'>
41
21d0d0ab7aa0 xeps: renamed published proto-xeps, and updated them according to published version
Goffi <goffi@goffi.org>
parents: 34
diff changeset
626 <p>This XEP is linked with &xep0356; and works in a similar way.</p>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
627 <p>The client mode delegation mechanism is inspired from &xep0321; permission request.</p>
33
b70084aa0af7 xeps: added thanks to souliane for his corrections
Goffi <goffi@goffi.org>
parents: 32
diff changeset
628 <p>Thanks to Adrien Cossa for his typos/style corrections</p>
42
bbb900a768ea xeps: updated xep-0355 (namespace delegation):
Goffi <goffi@goffi.org>
parents: 41
diff changeset
629 <p>Thanks to Philipp Hancke, Dave Cridland, Kurt Zeilenga and Sergey Dobrov for their feedbacks.</p>
30
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
630 </section1>
b04be960ebdf xep: namespace delegation first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
631 </xep>