RFC 4532

Lightweight Directory Access Protocol (LDAP) "Who am I?" Operation

๐Ÿ“… published June 2006, from ietf

RFC 4532: Lightweight Directory Access Protocol (LDAP) "Who am I?" Operation ๐Ÿฆ‹

okay bestie, let's get into RFC 4532 ๐Ÿ’… It's from the Network Working Group, written by K. Zeilenga of the OpenLDAP Foundation. It's a Standards Track doc dated June 2006. The title block doesn't list anything it obsoletes or updates, so there's no drama there โœจ

Status of This Memo โœจ

This is an Internet standards track protocol for the Internet community, and it's asking for discussion and suggestions for improvements ๐ŸŽ€ For the standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1) ๐Ÿ’œ Distribution of this memo is unlimited ๐ŸŒธ

Copyright (C) The Internet Society (2006). ๐Ÿ’–

Abstract ๐Ÿงš

This spec gives LDAP clients a way to get the authorization identity the server has linked to the user or application entity ๐Ÿซถ The mechanism is an LDAP extended operation called the LDAP "Who am I?" operation โœจ

1. Background and Intent of Use ๐ŸŒธ

Okay so this is the LDAP [RFC4510] operation clients use to get the primary authorization identity, in its primary form, that the server associated with the user or application entity ๐Ÿ’… It's called the "Who am I?" operation ๐Ÿฆ‹

This spec is meant to replace the Authorization Identity Controls [RFC3829] mechanism, which uses Bind request and response controls to request and return the authorization identity. Bind controls are not protected by the security layers that the Bind operation itself sets up ๐Ÿ™ˆ You can set up security layers with StartTLS [RFC4511][RFC4513] before the Bind, but it's often desirable to use the security layers established by the Bind operation instead ๐Ÿ”ฅ An extended operation sent after a Bind operation is protected by those Bind-established security layers ๐Ÿ›ก๏ธ

There are other times you'd want the authorization identity the server associated with the client, separate from the Bind operation ๐Ÿ‘‘ For example, the "Who am I?" operation can be augmented with a Proxied Authorization Control [RFC4370] to find the authorization identity the server associates with the identity asserted in that control ๐Ÿง  The "Who am I?" operation can also be used prior to the Bind operation โœจ

Servers often associate multiple authorization identities with the client, and each authorization identity may be represented by multiple authzId [RFC4513] strings ๐Ÿ“ This operation requests and returns the authzId the server considers primary ๐Ÿ’… In this spec, "the authorization identity" and "the authzId" are generally read as "the primary authorization identity" and "the primary authzId", respectively.

1.1. Conventions Used in This Document ๐Ÿ“–

Here's the key word situation, bestie ๐Ÿ”‘ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] ๐Ÿ’€ Those are the big-deal words, so read them carefully ๐Ÿซถ

2. The "Who am I?" Operation ๐ŸŽ€

The "Who am I?" operation is an LDAP Extended Operation [RFC4511] identified by the whoamiOID Object Identifier (OID) ๐Ÿงš This section breaks down the syntax of the operation's whoami request and response messages ๐Ÿ’–

whoamiOID ::= "1.3.6.1.4.1.4203.1.11.3"

2.1. The whoami Request ๐Ÿ“จ

The whoami request is an ExtendedRequest with a requestName field containing the whoamiOID OID and an absent requestValue field ๐Ÿ’… For example, a whoami request could be encoded as the sequence of octets (in hex):

30 1e 02 01 02 77 19 80  17 31 2e 33 2e 36 2e 31
2e 34 2e 31 2e 34 32 30  33 2e 31 2e 31 31 2e 33

2.2. The whoami Response ๐Ÿ“ฌ

The whoami response is an ExtendedResponse where the responseName field is absent and the response field, if present, is empty or an authzId [RFC4513] ๐ŸŒˆ For example, a whoami response returning the authzId u:xxyyz@EXAMPLE.NET (in response to the example request) would be encoded as the sequence of octets (in hex):

30 21 02 01 02 78 1c 0a  01 00 04 00 04 00 8b 13
75 3a 78 78 79 79 7a 40  45 58 41 4d 50 4c 45 2e
4e 45 54

3. Operational Semantics ๐Ÿงš

The "Who am I?" operation gives us a mechanism, a whoami Request, for the client to ask the server to return the authorization identity it currently associates with the client ๐Ÿ’– It also has a mechanism, a whoami Response, for the server to answer that request ๐Ÿซถ

Servers show they support this extended operation by providing a whoamiOID object identifier as a value of the supportedExtension attribute type in their root DSE ๐ŸŒธ The server SHOULD advertise this extension only when the client is willing and able to perform this operation ๐Ÿ”ฅ

If the server is willing and able to provide the authorization identity it associates with the client, the server SHALL return a whoami Response with a success resultCode โœจ If the server is treating the client as an anonymous entity, the response field is present but empty ๐Ÿ™ˆ Otherwise, the server provides the authzId [RFC4513] representing the authorization identity it currently associates with the client in the response field ๐Ÿ’…

If the server is unwilling or unable to provide the authorization identity it associates with the client, the server SHALL return a whoami Response with an appropriate non-success resultCode (such as operationsError, protocolError, confidentialityRequired, insufficientAccessRights, busy, unavailable, unwillingToPerform, or other) and an absent response field ๐Ÿ’€

As described in [RFC4511] and [RFC4513], an LDAP session has an "anonymous" association until the client has been successfully authenticated using the Bind operation ๐ŸŒ™ Clients MUST NOT invoke the "Who am I?" operation while any Bind operation is in progress, including between two Bind requests made as part of a multi-stage Bind operation ๐Ÿšซ If a whoami Request is received in violation of this absolute prohibition, the server should return a whoami Response with an operationsError resultCode ๐Ÿ™…

4. Extending the "Who am I?" Operation with Controls ๐Ÿฆ‹

Future specifications may extend the "Who am I?" operation using the control mechanism [RFC4511] ๐Ÿ”ฎ When extended by controls, the "Who am I?" operation requests and returns the authorization identity the server associates with the client in a particular context indicated by those controls โœจ

4.1. Proxied Authorization Control ๐ŸŽญ

The Proxied Authorization Control [RFC4370] is used by clients to request that the operation it is attached to operate under the authorization of an assumed identity ๐Ÿ‘‘ The client provides the identity to assume in the Proxied Authorization request control ๐Ÿ’… If the client is authorized to assume the requested identity, the server executes the operation as if the requested identity had issued the operation ๐Ÿซถ

As servers often map the asserted authzId to another identity [RFC4513], it is desirable to request that the server provide the authzId it associates with the assumed identity ๐Ÿ“

When a Proxied Authorization Control is attached to the "Who am I?" operation, the operation requests the return of the authzId the server associates with the identity asserted in the Proxied Authorization Control ๐Ÿงš The authorizationDenied (123) result code is used to indicate that the server does not allow the client to assume the asserted identity ๐Ÿ™…

5. Security Considerations ๐Ÿšจ

Identities associated with users may be sensitive information ๐Ÿ˜ญ When they are, security layers [RFC4511][RFC4513] should be established to protect this information ๐Ÿ›ก๏ธ This mechanism is specifically designed to allow security layers established by a Bind operation to protect the integrity and/or confidentiality of the authorization identity ๐Ÿ”

Servers may place access control or other restrictions upon the use of this operation ๐Ÿšง As stated in Section 3, the server SHOULD advertise this extension when it is willing and able to perform the operation ๐Ÿ™

As with any other extended operations, general LDAP security considerations [RFC4510] apply ๐Ÿ’€

6. IANA Considerations ๐Ÿ“‹

The OID 1.3.6.1.4.1.4203.1.11.3 is used to identify the LDAP "Who am I?" extended operation ๐Ÿ†” This OID was assigned [ASSIGN] by the OpenLDAP Foundation, under its IANA-assigned private enterprise allocation [PRIVATE], for use in this specification โœจ

Registration of this protocol mechanism [RFC4520] has been completed by the IANA ๐ŸŽ‰

Subject: Request for LDAP Protocol Mechanism Registration
Object Identifier: 1.3.6.1.4.1.4203.1.11.3
Description: Who am I?
Person & email address to contact for further information:
        Kurt Zeilenga <kurt@openldap.org>
Usage: Extended Operation
Specification: RFC 4532
Author/Change Controller: IESG
Comments: none

7. Acknowledgement ๐Ÿซถ

This document borrows from prior work in this area, including "Authentication Response Control" [RFC3829] by Rob Weltman, Mark Smith, and Mark Wahl ๐Ÿ’œ

The LDAP "Who am I?" operation takes its name from the UNIX whoami(1) command ๐Ÿ’ป The whoami(1) command displays the effective user ID ๐Ÿ“

8. References ๐Ÿ“š

8.1. Normative References ๐Ÿ”—

  • [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
  • [RFC4370] Weltman, R., "Lightweight Directory Access Protocol (LDAP) Proxied Authorization Control", RFC 4370, February 2006.
  • [RFC4510] Zeilenga, K., Ed., "Lightweight Directory Access Protocol (LDAP): Technical Specification Road Map", RFC 4510, June 2006.
  • [RFC4511] Sermersheim, J., Ed., "Lightweight Directory Access Protocol (LDAP): The Protocol", RFC 4511, June 2006.
  • [RFC4513] Harrison, R., Ed., "Lightweight Directory Access Protocol (LDAP): Authentication Methods and Security Mechanisms", RFC 4513, June 2006.

8.2. Informative References ๐ŸŒ™

Intellectual Property โœจ

okay so the IETF is like, "we're not picking a side on whether any IP rights apply to this tech ๐Ÿ™…โ€โ™€๏ธ, and we're not saying we checked for any either ๐Ÿคทโ€โ™€๏ธ." ๐Ÿ’… whether there's a license out there is a whole separate drama. the rules for rights in RFC docs live in BCP 78 and BCP 79, so go read those if you're curious ๐Ÿ“š

copies of IPR disclosures sent to the IETF Secretariat, plus any license promises, or the results of trying to get a general license or permission for implementers or users to use these proprietary rights, can be found in the IETF online IPR repository at http://www.ietf.org/ipr. ๐Ÿฆ‹

and the IETF is literally begging for tips ๐Ÿฅบ if you know of any copyrights, patents, patent applications, or other proprietary rights that might cover tech you'd need to build this standard, tell them at ietf-ipr@ietf.org. bestie, speak up!! ๐Ÿ“ฃ๐Ÿ’–


Acknowledgement ๐Ÿซถ

so the RFC Editor function? it's funded by the IETF Administrative Support Activity (IASA). the people keeping these docs running get backed by IASA, which is honestly so iconic of them ๐Ÿ‘‘๐ŸŒธ

๐Ÿ“ฆ where this page comes from