]> git.sur5r.net Git - openldap/blob - doc/drafts/draft-masarati-ldap-whatfailed.xml
Do not require ac/string.h for lber_pvt.h
[openldap] / doc / drafts / draft-masarati-ldap-whatfailed.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
4     <!ENTITY rfc2119 PUBLIC '' 
5       'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
6     <!ENTITY rfc4510 PUBLIC '' 
7       'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4510.xml'>
8     <!ENTITY rfc4511 PUBLIC '' 
9       'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4511.xml'>
10     <!ENTITY rfc4512 PUBLIC '' 
11       'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4512.xml'>
12     <!ENTITY rfc4526 PUBLIC '' 
13       'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4526.xml'>
14     <!ENTITY rfc4529 PUBLIC '' 
15       'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4529.xml'>
16 ]>
17
18 <!-- $OpenLDAP$ -->
19
20 <rfc category="std" ipr="full3978" docName="draft-masarati-ldap-whatfailed-00.txt">
21
22 <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
23
24 <?rfc toc="yes" ?>
25 <?rfc symrefs="yes" ?>
26 <?rfc sortrefs="yes"?>
27 <?rfc iprnotified="no" ?>
28 <?rfc strict="yes" ?>
29
30     <front>
31         <title abbrev='LDAP WHATFAILED'>LDAP "What Failed?" Control</title>
32         <author initials='P.' surname="Masarati" fullname='Pierangelo Masarati'>
33             <organization abbrev='Politecnico di Milano'>
34                 Politecnico di Milano
35             </organization>
36             <address>
37                 <postal>
38                     <street>Dipartimento di Ingegneria Aerospaziale</street>
39                     <street>via La Masa 34</street>
40                     <city>Milano</city>
41                     <code>20156</code>
42                     <country>IT</country>
43                 </postal>
44                 <phone>+39 02 2399 8309</phone>
45                 <facsimile>+39 02 2399 8334</facsimile>
46                 <email>ando@OpenLDAP.org</email>
47                 <uri>http://www.aero.polimi.it/masarati/</uri>
48             </address>
49         </author>
50         <date/>
51         <abstract>
52             <t>
53 This document describes the LDAP "What Failed?" control.
54 This control allows DUAs to request, in response to a failed operation
55 request, the object identifier of those extensions that caused
56 the operation to fail.
57             </t>
58         </abstract>
59     </front>
60
61     <middle>
62         <section title="Background and Intended Use">
63             <t>
64 The LDAP Protocol <xref target="RFC4510" /> is extensible.
65 Extensions include controls, extended requests and extensions related
66 to other aspects of the protocol, for example those described in
67 <xref target="RFC4526" />, <xref target="RFC4529" /> and more.
68             </t>
69
70             <t>
71 Operations may fail for different reasons.
72 The resultCode may help in determining the reason of a failure.
73 The (optional) diagnosticsMessage fields of a LDAPResponse
74 could also be of help.
75 However, according to <xref target="RFC4511" />,
76 implementations MUST NOT rely on the returned values,
77 which are simply intended to be presented as are to human users.
78             </t>
79
80             <t>
81 In case of failure related to the inability to process a control
82 marked as critical in a request, the specific resultCode
83 unavailableCriticalExtension is returned.
84 In case of failure related to an unrecognized extendedReq, the generic
85 resultCode protocolError is returned.
86 Failures related to handling other extensions may result 
87 in other generic resultCode values.
88             </t>
89
90             <t>
91 As a consequence, DUAs may be unable to exactly determine
92 what extension, if any, caused a failure.
93 The "What Failed?" control represents a means for the DSA to inform
94 DUAs about what specific extensions, if any, caused an error notified
95 by the DSA.
96             </t>
97
98             <t>
99 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
100 "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
101 and "OPTIONAL" in this document are to be interpreted as
102 described in <xref target="RFC2119" />.
103             </t>
104         </section>
105
106         <section title='LDAP "What Failed?" Control'>
107             <section title="Control Semantics">
108                 <t>
109 The presence of the "What Failed?" LDAP control in a LDAP request
110 indicates that the DUA, in case of error, wishes to receive detailed
111 information about what extension, if any, caused the error.
112                 </t>
113
114                 <t>
115 The criticality of the control in the request SHOULD be FALSE.
116 According to the semantics of the criticality field as indicated
117 in <xref target="RFC4511" />, this ensures that in case the control
118 is not recognized by the DSA, it does not cause itself an error.
119                 </t>
120
121                 <t>
122 The presence of this control in a request does not guarantee that the DSA
123 will return detailed information about what extensions caused an error.
124 Considering the requirement on the criticality of the control,
125 the DSA MAY simply choose to ignore the control.
126 The DSA MAY hide information about failure in handling an extension
127 to prevent disclosure of other information.
128 The DSA MAY choose to notify an error as soon as it is detected,
129 instead of proceed checking its ability to handle any other extension
130 present in a request.
131                 </t>
132
133                 <t>
134 Implementations may choose to check the validity of extensions,
135 including controls, as soon as they are parsed.
136 As a consequence, a critical control might result in an error
137 before thw "What Failed?" control request is parsed.
138 Implementations SHOULD check anyway the presence of this control,
139 unless they detect that the remaining part of the request
140 is malformed.
141 Clients SHOULD NOT rely on any specific ordering of controls handling
142 when requesting the "What Failed?" control.
143                 </t>
144
145                 <t>
146 Servers implementing this technical specification SHOULD publish
147 the object identifier whatFailed-oid (IANA assigned;
148 see <xref target="iana_considerations" />) as a value
149 of the 'supportedControl' attribute <xref target="RFC4512" />
150 in their root DSE.
151                 </t>
152             </section>
153
154             <section title="Control Request">
155                 <t>
156 The controlType is whatFailed-oid (IANA assigned;
157 see <xref target="iana_considerations" />);
158 the controlValue MUST be absent;
159 the criticality SHOULD be FALSE.
160                 </t>
161             </section>
162
163             <section title="Control Response">
164                 <figure>
165                     <preamble>
166 The controlType is whatFailed-oid (IANA assigned;
167 see <xref target="iana_considerations" />);
168 the controlValue is:
169                     </preamble>
170                     <artwork>
171     controlValue ::= SET OF oid LDAPOID
172                     </artwork>
173                     <postamble>
174 If the set of extension OID is empty, the control is omitted
175 from the response.
176 The criticality MUST be FALSE.
177                     </postamble>
178                 </figure>
179             </section>
180         </section>
181
182         <section title="Implementation Notes">
183             <t>
184 The "What Failed?" LDAP Control is implemented in OpenLDAP software
185 using the temporary OID 1.3.6.1.4.1.4203.666.5.17 under OpenLDAP's
186 experimental OID arc.
187             </t>
188         </section>
189
190         <section title="Security Considerations">
191             <t>
192 Implementations MUST take measures to prevent the disclosure
193 of sensible information whenever this may result from disclosing
194 what extension caused an error.
195 This can consist in excluding the OID of specific extensions from
196 the controlValue in the response, or in entirely omitting the control
197 in the response.
198             </t>
199         </section>
200
201         <section anchor="iana_considerations" title="IANA Considerations">
202             <section title="Object Identifier Registration">
203                 <figure>
204                     <preamble>
205 It is requested that IANA register upon Standards Action an LDAP
206 Object Identifier for use in this technical specification.
207                     </preamble>
208                     <artwork>
209       Subject: Request for LDAP OID Registration
210       Person &amp; email address to contact for further information:
211           Pierangelo Masarati &lt;ando@OpenLDAP.org&gt;
212       Specification: (I-D)
213       Author/Change Controller: IESG
214       Comments:
215           Identifies the LDAP "What Failed?" Control request
216           and response
217                     </artwork>
218                 </figure>
219             </section>
220         </section>
221
222         <section title="Acknowledgments">
223         </section>
224     </middle>
225
226     <back>
227         <references title='Normative References'>
228             &rfc2119;
229             &rfc4510;
230             &rfc4511;
231             &rfc4512;
232         </references>
233         <references title='Informative References'>
234             &rfc4526;
235             &rfc4529;
236         </references>
237     </back>
238
239 </rfc>