libnet: Fix Coverity ID 1634803 Dereference after null check
[Samba.git] / source4 / ldap_server / devdocs / rfc4532.txt
blob277b3b7442b0ad7e0f6ca9a6c7a84e314ea6bd2a
7 Network Working Group                                        K. Zeilenga
8 Request for Comments: 4532                           OpenLDAP Foundation
9 Category: Standards Track                                      June 2006
12               Lightweight Directory Access Protocol (LDAP)
13                          "Who am I?" Operation
15 Status of This Memo
17    This document specifies an Internet standards track protocol for the
18    Internet community, and requests discussion and suggestions for
19    improvements.  Please refer to the current edition of the "Internet
20    Official Protocol Standards" (STD 1) for the standardization state
21    and status of this protocol.  Distribution of this memo is unlimited.
23 Copyright Notice
25    Copyright (C) The Internet Society (2006).
27 Abstract
29    This specification provides a mechanism for Lightweight Directory
30    Access Protocol (LDAP) clients to obtain the authorization identity
31    the server has associated with the user or application entity.  This
32    mechanism is specified as an LDAP extended operation called the LDAP
33    "Who am I?" operation.
35 1.  Background and Intent of Use
37    This specification describes a Lightweight Directory Access Protocol
38    (LDAP) [RFC4510] operation that clients can use to obtain the primary
39    authorization identity, in its primary form, that the server has
40    associated with the user or application entity.  The operation is
41    called the "Who am I?" operation.
43    This specification is intended to replace the existing Authorization
44    Identity Controls [RFC3829] mechanism, which uses Bind request and
45    response controls to request and return the authorization identity.
46    Bind controls are not protected by security layers established by the
47    Bind operation that includes them.  While it is possible to establish
48    security layers using StartTLS [RFC4511][RFC4513] prior to the Bind
49    operation, it is often desirable to use security layers established
50    by the Bind operation.  An extended operation sent after a Bind
51    operation is protected by the security layers established by the Bind
52    operation.
58 Zeilenga                    Standards Track                     [Page 1]
60 RFC 4532               LDAP "Who am I?" Operation              June 2006
63    There are other cases where it is desirable to request the
64    authorization identity that the server associated with the client
65    separately from the Bind operation.  For example, the "Who am I?"
66    operation can be augmented with a Proxied Authorization Control
67    [RFC4370] to determine the authorization identity that the server
68    associates with the identity asserted in the Proxied Authorization
69    Control.  The "Who am I?" operation can also be used prior to the
70    Bind operation.
72    Servers often associate multiple authorization identities with the
73    client, and each authorization identity may be represented by
74    multiple authzId [RFC4513] strings.  This operation requests and
75    returns the authzId that the server considers primary.  In the
76    specification, the term "the authorization identity" and "the
77    authzId" are generally to be read as "the primary authorization
78    identity" and the "the primary authzId", respectively.
80 1.1.  Conventions Used in This Document
82    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
83    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
84    document are to be interpreted as described in BCP 14 [RFC2119].
86 2.  The "Who am I?" Operation
88    The "Who am I?" operation is defined as an LDAP Extended Operation
89    [RFC4511] identified by the whoamiOID Object Identifier (OID).  This
90    section details the syntax of the operation's whoami request and
91    response messages.
93       whoamiOID ::= "1.3.6.1.4.1.4203.1.11.3"
95 2.1.  The whoami Request
97    The whoami request is an ExtendedRequest with a requestName field
98    containing the whoamiOID OID and an absent requestValue field.  For
99    example, a whoami request could be encoded as the sequence of octets
100    (in hex):
102       30 1e 02 01 02 77 19 80  17 31 2e 33 2e 36 2e 31
103       2e 34 2e 31 2e 34 32 30  33 2e 31 2e 31 31 2e 33
114 Zeilenga                    Standards Track                     [Page 2]
116 RFC 4532               LDAP "Who am I?" Operation              June 2006
119 2.2.  The whoami Response
121    The whoami response is an ExtendedResponse where the responseName
122    field is absent and the response field, if present, is empty or an
123    authzId [RFC4513].  For example, a whoami response returning the
124    authzId "u:xxyyz@EXAMPLE.NET" (in response to the example request)
125    would be encoded as the sequence of octets (in hex):
127       30 21 02 01 02 78 1c 0a  01 00 04 00 04 00 8b 13
128       75 3a 78 78 79 79 7a 40  45 58 41 4d 50 4c 45 2e
129       4e 45 54
131 3.  Operational Semantics
133    The "Who am I?" operation provides a mechanism, a whoami Request, for
134    the client to request that the server return the authorization
135    identity it currently associates with the client.  It also provides a
136    mechanism, a whoami Response, for the server to respond to that
137    request.
139    Servers indicate their support for this extended operation by
140    providing a whoamiOID object identifier as a value of the
141    'supportedExtension' attribute type in their root DSE.  The server
142    SHOULD advertise this extension only when the client is willing and
143    able to perform this operation.
145    If the server is willing and able to provide the authorization
146    identity it associates with the client, the server SHALL return a
147    whoami Response with a success resultCode.  If the server is treating
148    the client as an anonymous entity, the response field is present but
149    empty.  Otherwise, the server provides the authzId [RFC4513]
150    representing the authorization identity it currently associates with
151    the client in the response field.
153    If the server is unwilling or unable to provide the authorization
154    identity it associates with the client, the server SHALL return a
155    whoami Response with an appropriate non-success resultCode (such as
156    operationsError, protocolError, confidentialityRequired,
157    insufficientAccessRights, busy, unavailable, unwillingToPerform, or
158    other) and an absent response field.
160    As described in [RFC4511] and [RFC4513], an LDAP session has an
161    "anonymous" association until the client has been successfully
162    authenticated using the Bind operation.  Clients MUST NOT invoke the
163    "Who am I?" operation while any Bind operation is in progress,
164    including between two Bind requests made as part of a multi-stage
170 Zeilenga                    Standards Track                     [Page 3]
172 RFC 4532               LDAP "Who am I?" Operation              June 2006
175    Bind operation.  Where a whoami Request is received in violation of
176    this absolute prohibition, the server should return a whoami Response
177    with an operationsError resultCode.
179 4.  Extending the "Who am I?" Operation with Controls
181    Future specifications may extend the "Who am I?" operation using the
182    control mechanism [RFC4511].  When extended by controls, the "Who am
183    I?" operation requests and returns the authorization identity the
184    server associates with the client in a particular context indicated
185    by the controls.
187 4.1.  Proxied Authorization Control
189    The Proxied Authorization Control [RFC4370] is used by clients to
190    request that the operation it is attached to operate under the
191    authorization of an assumed identity.  The client provides the
192    identity to assume in the Proxied Authorization request control.  If
193    the client is authorized to assume the requested identity, the server
194    executes the operation as if the requested identity had issued the
195    operation.
197    As servers often map the asserted authzId to another identity
198    [RFC4513], it is desirable to request that the server provide the
199    authzId it associates with the assumed identity.
201    When a Proxied Authorization Control is be attached to the "Who am
202    I?"  operation, the operation requests the return of the authzId the
203    server associates with the identity asserted in the Proxied
204    Authorization Control.  The authorizationDenied (123) result code is
205    used to indicate that the server does not allow the client to assume
206    the asserted identity.
208 5.  Security Considerations
210    Identities associated with users may be sensitive information.  When
211    they are, security layers [RFC4511][RFC4513] should be established to
212    protect this information.  This mechanism is specifically designed to
213    allow security layers established by a Bind operation to protect the
214    integrity and/or confidentiality of the authorization identity.
216    Servers may place access control or other restrictions upon the use
217    of this operation.  As stated in Section 3, the server SHOULD
218    advertise this extension when it is willing and able to perform the
219    operation.
221    As with any other extended operations, general LDAP security
222    considerations [RFC4510] apply.
226 Zeilenga                    Standards Track                     [Page 4]
228 RFC 4532               LDAP "Who am I?" Operation              June 2006
231 6.  IANA Considerations
233    The OID 1.3.6.1.4.1.4203.1.11.3 is used to identify the LDAP "Who am
234    I?" extended operation.  This OID was assigned [ASSIGN] by the
235    OpenLDAP Foundation, under its IANA-assigned private enterprise
236    allocation [PRIVATE], for use in this specification.
238    Registration of this protocol mechanism [RFC4520] has been completed
239    by the IANA.
241    Subject: Request for LDAP Protocol Mechanism Registration
242    Object Identifier: 1.3.6.1.4.1.4203.1.11.3
243    Description: Who am I?
244    Person & email address to contact for further information:
245         Kurt Zeilenga <kurt@openldap.org>
246    Usage: Extended Operation
247    Specification: RFC 4532
248    Author/Change Controller: IESG
249    Comments: none
251 7.  Acknowledgement
253    This document borrows from prior work in this area, including
254    "Authentication Response Control" [RFC3829] by Rob Weltman, Mark
255    Smith, and Mark Wahl.
257    The LDAP "Who am I?" operation takes it's name from the UNIX
258    whoami(1) command.  The whoami(1) command displays the effective user
259    ID.
261 8.  References
263 8.1.  Normative References
265    [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
266              Requirement Levels", BCP 14, RFC 2119, March 1997.
268    [RFC4370] Weltman, R., "Lightweight Directory Access Protocol (LDAP)
269              Proxied Authorization Control", RFC 4370, February 2006.
271    [RFC4510] Zeilenga, K., Ed., "Lightweight Directory Access Protocol
272              (LDAP): Technical Specification Road Map", RFC 4510, June
273              2006.
275    [RFC4511] Sermersheim, J., Ed., "Lightweight Directory Access
276              Protocol (LDAP): The Protocol", RFC 4511, June 2006.
282 Zeilenga                    Standards Track                     [Page 5]
284 RFC 4532               LDAP "Who am I?" Operation              June 2006
287    [RFC4513] Harrison, R., Ed., "Lightweight Directory Access Protocol
288              (LDAP): Authentication Methods and Security Mechanisms",
289              RFC 4513, June 2006.
291 8.2.  Informative References
293    [RFC3829] Weltman, R., Smith, M., and M. Wahl, "Lightweight Directory
294              Access Protocol (LDAP) Authorization Identity Request and
295              Response Controls", RFC 3829, July 2004.
297    [RFC4520] Zeilenga, K., "Internet Assigned Numbers Authority (IANA)
298              Considerations for the Lightweight Directory Access
299              Protocol (LDAP)", BCP 64, RFC 4520, June 2006.
301    [ASSIGN]  OpenLDAP Foundation, "OpenLDAP OID Delegations",
302              http://www.openldap.org/foundation/oid-delegate.txt.
304    [PRIVATE] IANA, "Private Enterprise Numbers",
305              http://www.iana.org/assignments/enterprise-numbers.
307 Author's Address
309    Kurt D. Zeilenga
310    OpenLDAP Foundation
312    EMail: Kurt@OpenLDAP.org
338 Zeilenga                    Standards Track                     [Page 6]
340 RFC 4532               LDAP "Who am I?" Operation              June 2006
343 Full Copyright Statement
345    Copyright (C) The Internet Society (2006).
347    This document is subject to the rights, licenses and restrictions
348    contained in BCP 78, and except as set forth therein, the authors
349    retain all their rights.
351    This document and the information contained herein are provided on an
352    "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
353    OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
354    ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
355    INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
356    INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
357    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
359 Intellectual Property
361    The IETF takes no position regarding the validity or scope of any
362    Intellectual Property Rights or other rights that might be claimed to
363    pertain to the implementation or use of the technology described in
364    this document or the extent to which any license under such rights
365    might or might not be available; nor does it represent that it has
366    made any independent effort to identify any such rights.  Information
367    on the procedures with respect to rights in RFC documents can be
368    found in BCP 78 and BCP 79.
370    Copies of IPR disclosures made to the IETF Secretariat and any
371    assurances of licenses to be made available, or the result of an
372    attempt made to obtain a general license or permission for the use of
373    such proprietary rights by implementers or users of this
374    specification can be obtained from the IETF on-line IPR repository at
375    http://www.ietf.org/ipr.
377    The IETF invites any interested party to bring to its attention any
378    copyrights, patents or patent applications, or other proprietary
379    rights that may cover technology that may be required to implement
380    this standard.  Please address the information to the IETF at
381    ietf-ipr@ietf.org.
383 Acknowledgement
385    Funding for the RFC Editor function is provided by the IETF
386    Administrative Support Activity (IASA).
394 Zeilenga                    Standards Track                     [Page 7]