draft-ietf-ldapbis-authmeth-11.txt   draft-ietf-ldapbis-authmeth-12.txt 
INTERNET-DRAFT Editor: R. Harrison INTERNET-DRAFT Editor: R. Harrison
draft-ietf-ldapbis-authmeth-11.txt Novell, Inc. draft-ietf-ldapbis-authmeth-12.txt Novell, Inc.
Obsoletes: 2829, 2830 July, 2004 Obsoletes: 2829, 2830 August, 2004
Intended Category: Draft Standard Intended Category: Draft Standard
LDAP: Authentication Methods LDAP: Authentication Methods
and and
Connection Level Security Mechanisms Connection Level Security Mechanisms
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with By submitting this Internet-Draft, I accept the provisions of
all provisions of Section 10 of RFC2026. Section 4 of RFC 3667. By submitting this Internet-Draft, I certify
that any applicable patent or other IPR claims of which I am aware
have been disclosed, and any of which I become aware will be
disclosed, in accordance with RFC 3668.
This document is intended to be, after appropriate review and This document is intended to be, after appropriate review and
revision, submitted to the RFC Editor as a Standard Track document. revision, submitted to the RFC Editor as a Standard Track document.
Distribution of this memo is unlimited. Technical discussion of Distribution of this memo is unlimited. Technical discussion of
this document will take place on the IETF LDAP Revision Working this document will take place on the IETF LDAP Revision Working
Group mailing list <ietf-ldapbis@OpenLDAP.org>. Please send Group mailing list <ietf-ldapbis@OpenLDAP.org>. Please send
editorial comments directly to the author editorial comments directly to the author
<roger_harrison@novell.com>. <roger_harrison@novell.com>.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet- other groups may also distribute working documents as Internet-
Drafts. Internet-Drafts are draft documents valid for a maximum of Drafts.
six months and may be updated, replaced, or obsoleted by other
documents at any time. It is inappropriate to use Internet-Drafts Internet-Drafts are draft documents valid for a maximum of six
as reference material or to cite them other than as "work in months and may be updated, replaced, or obsoleted by other documents
progress." at any time. It is inappropriate to use Internet-Drafts as
reference material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet- http://www.ietf.org/ietf/1id-abstracts.txt
Draft Shadow Directories can be accessed at
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2004). All Rights Reserved. Copyright (C) The Internet Society (2004). All Rights Reserved.
Abstract Abstract
This document describes authentication methods and connection level This document describes authentication methods and connection level
security mechanisms of the Lightweight Directory Access Protocol security mechanisms of the Lightweight Directory Access Protocol
(LDAP). (LDAP).
This document details establishment of TLS (Transport Layer This document details establishment of TLS (Transport Layer
Security) using the Start TLS operation. Security) using the Start TLS operation.
This document details the simple Bind authentication method This document details the simple Bind authentication method
including anonymous, unauthenticated, and plain-text password including anonymous, unauthenticated, and plain-text password
methods and the SASL (Simple Authentication and Security Layer) Bind mechanisms and the SASL (Simple Authentication and Security Layer)
authentication method including the use of DIGEST-MD5 and EXTERNAL Bind authentication method including DIGEST-MD5 and EXTERNAL
mechanisms. mechanisms.
This document discusses various authentication and authorization This document discusses various authentication and authorization
states through which a connection to an LDAP server may pass and the states through which a connection to an LDAP server may pass and the
actions that trigger these state changes. actions that trigger these state changes.
Table of Contents Table of Contents
1. Introduction.....................................................3 1. Introduction.....................................................3
1.1. Relationship to Other Documents................................5 1.1. Relationship to Other Documents................................5
1.2. Conventions Used in this Document..............................5 1.2. Conventions Used in this Document..............................6
1.2.1. Glossary of Terms............................................5 1.2.1. Glossary of Terms............................................6
1.2.2. Security Terms and Concepts..................................6 1.2.2. Security Terms and Concepts..................................6
1.2.3. Keywords.....................................................6 1.2.3. Keywords.....................................................6
2. Implementation Requirements......................................6 2. Implementation Requirements......................................6
3. Start TLS Operation..............................................7 3. StartTLS Operation...............................................7
3.1. Sequencing of the Start TLS Operation..........................7 3.1. Sequencing of the StartTLS Operation...........................7
3.1.1. Start TLS Request ...........................................7 3.1.1. StartTLS Request ............................................7
3.1.2. Start TLS Response...........................................8 3.1.2. StartTLS Response............................................8
3.1.3. TLS Version Negotiation......................................8 3.1.3. TLS Version Negotiation......................................8
3.1.4. Client Certificate...........................................8 3.1.4. Client Certificate...........................................8
3.1.5. Discovery of Resultant Security Level........................8 3.1.5. Discovery of Resultant Security Level........................8
3.1.6. Server Identity Check........................................8 3.1.6. Server Identity Check........................................9
3.1.7. Refresh of Server Capabilities Information...................9 3.1.7. Refresh of Server Capabilities Information...................9
3.2. Effects of TLS on a Client's Authorization Identity............9 3.2. Effects of TLS on a Client's Authorization Identity...........10
3.2.1. TLS Connection Establishment Effects........................10 3.2.1. TLS Connection Establishment Effects........................10
3.2.2. Client Assertion of Authorization Identity..................10 3.2.2. Client Assertion of Authorization Identity..................10
3.2.3. TLS Connection Closure Effects..............................10 3.2.3. TLS Connection Closure Effects..............................10
4. LDAP Associations...............................................10 3.3. TLS Ciphersuites..............................................10
4.1. Anonymous LDAP Association on Unbound Connections.............10 3.3.1. TLS Ciphersuites Recommendations............................11
4.2 Anonymous LDAP Association After Failed Bind...................10 4. LDAP Associations...............................................12
4.3. Invalidated Associations......................................11 4.1. Anonymous LDAP Association on Unbound Connections.............12
5. Bind Operation .................................................11 4.2. Anonymous LDAP Association After Failed Bind..................12
5.1. Simple Authentication Choice..................................11 4.3. Invalidated Associations......................................12
5.2. SASL Authentication Choice....................................11 5. Bind Operation..................................................12
6. Anonymous Authentication Mechanism of Simple Bind...............12 5.1. Simple Authentication Choice..................................13
7. Unauthenticated Authentication Mechanism of Simple Bind.........12 5.2. SASL Authentication Choice....................................13
8. Simple Authentication Mechanism of Simple Bind .................12 6. Anonymous Authentication Mechanism of Simple Bind...............13
9. SASL Protocol Profile...........................................13 7. Unauthenticated Authentication Mechanism of Simple Bind.........13
9.1. SASL Service Name for LDAP....................................13 8. Simple Authentication Mechanism of Simple Bind .................14
9.2. SASL Authentication Initiation and Protocol Exchange..........13 9. SASL Protocol Profile...........................................14
9.3. Octet Where Negotiated Security Mechanisms Take Effect........14 9.1. SASL Service Name for LDAP....................................14
9.4. Determination of Supported SASL Mechanisms....................15 9.2. SASL Authentication Initiation and Protocol Exchange..........15
9.5. Rules for Using SASL Security Layers..........................15 9.3. Octet Where Negotiated Security Mechanisms Take Effect........16
9.6 Support for Multiple Authentications...........................15 9.4. Determination of Supported SASL Mechanisms....................16
10. SASL EXTERNAL Mechanism........................................15 9.5. Rules for Using SASL Security Layers..........................16
10.1. Implicit Assertion...........................................16 9.6 Support for Multiple Authentications...........................17
10.2. Explicit Assertion...........................................16 10. SASL EXTERNAL Mechanism........................................17
10.3. SASL Authorization Identity..................................16 10.1. Implicit Assertion...........................................17
10.4. SASL Authorization Identity Syntax...........................16 10.2. Explicit Assertion...........................................17
11. SASL DIGEST-MD5 Mechanism......................................17 10.3. SASL Authorization Identity..................................17
12. General Requirements for Password Handling.....................18 10.4. SASL Authorization Identity Syntax...........................18
13. TLS Ciphersuites...............................................18 11. SASL DIGEST-MD5 Mechanism......................................19
13.1. TLS Ciphersuites Recommendations.............................19 12. Security Considerations........................................20
14. Security Considerations........................................20 12.1. General LDAP Security Considerations.........................20
14.1. Start TLS Security Considerations............................20 12.1.1.Password-related Security Considerations....................21
15. IANA Considerations............................................21 12.2. StartTLS Security Considerations.............................22
Acknowledgments....................................................21 12.3. Unauthenticated Mechanism Security Considerations............22
Normative References...............................................22 12.4. Simple Mechanism Security Considerations.....................23
Informative References.............................................23 12.5. SASL DIGEST-MD5 Mechanism Security Considerations............23
Author's Address...................................................23 12.6. Related Security Considerations..............................23
Appendix A. LDAP Association State Transition Tables...............23 13. IANA Considerations............................................23
A.1. LDAP Association States.......................................23 Acknowledgments....................................................23
A.2. Actions that Affect LDAP Association State....................24 Normative References...............................................24
A.3. Decisions Used in Making LDAP Association State Changes.......24 Informative References.............................................25
A.4. LDAP Association State Transition Table.......................24 Author's Address...................................................25
Appendix B. Example Deployment Scenarios...........................25 Appendix A. LDAP Association State Transition Tables...............25
Appendix C. Authentication and Authorization Concepts..............26 A.1. LDAP Association States.......................................25
C.1. Access Control Policy.........................................26 A.2. Actions that Affect LDAP Association State....................26
C.2. Access Control Factors........................................26 A.3. Decisions Used in Making LDAP Association State Changes.......26
C.3. Authentication, Credentials, Identity.........................26 A.4. LDAP Association State Transition Table.......................27
C.4. Authorization Identity........................................27 Appendix B. Authentication and Authorization Concepts..............27
Appendix D. RFC 2829 Change History................................27 B.1. Access Control Policy.........................................28
Appendix E. RFC 2830 Change History................................31 B.2. Access Control Factors........................................28
Appendix F. RFC 2251 Change History................................32 B.3. Authentication, Credentials, Identity.........................28
Appendix G. Change History to Combined Document....................32 B.4. Authorization Identity........................................28
Appendix H. Issues to be Resolved..................................43 Appendix C. RFC 2829 Change History................................29
Intellectual Property Rights.......................................57 Appendix D. RFC 2830 Change History................................33
Appendix E. RFC 2251 Change History................................33
Appendix F. Change History to Combined Document....................33
Intellectual Property Rights.......................................52
1. Introduction 1. Introduction
The Lightweight Directory Access Protocol (LDAP) [Roadmap] is a The Lightweight Directory Access Protocol (LDAP) [Roadmap] is a
powerful protocol for accessing directories. It offers means of powerful protocol for accessing directories. It offers means of
searching, retrieving and manipulating directory content, and ways searching, retrieving and manipulating directory content, and ways
to access a rich set of security functions. to access a rich set of security functions.
It is vital that these security functions be interoperable among all It is vital that these security functions be interoperable among all
LDAP clients and servers on the Internet; therefore there has to be LDAP clients and servers on the Internet; therefore there has to be
skipping to change at page 6, line 12 skipping to change at page 6, line 19
The following terms are used in this document. To aid the reader, The following terms are used in this document. To aid the reader,
these terms are defined here. these terms are defined here.
- "user" represents any human or application entity which is - "user" represents any human or application entity which is
accessing the directory using a directory client. A directory accessing the directory using a directory client. A directory
client (or client) is also known as a directory user agent (DUA). client (or client) is also known as a directory user agent (DUA).
- "connection" and "LDAP connection" both refer to the underlying - "connection" and "LDAP connection" both refer to the underlying
transport protocol connection between two protocol peers. transport protocol connection between two protocol peers.
- "TLS connection" refers to a TLS-protected [TLS] LDAP - "TLS connection" refers to an LDAP connection with TLS
connection. protection [TLS].
- "association" and "LDAP association" both refer to the - "association" and "LDAP association" both refer to the
association of the LDAP connection and its current association of the LDAP connection and its current
authentication and authorization state. authentication and authorization state.
1.2.2. Security Terms and Concepts 1.2.2. Security Terms and Concepts
In general, security terms in this document are used consistently In general, security terms in this document are used consistently
with the definitions provided in [RFC2828]. In addition, several with the definitions provided in [RFC2828]. In addition, several
terms and concepts relating to security, authentication, and terms and concepts relating to security, authentication, and
skipping to change at page 7, line 12 skipping to change at page 7, line 17
other suitable suitable data confidentiality and data integrity other suitable suitable data confidentiality and data integrity
protection (e.g. IPSec). protection (e.g. IPSec).
Implementations MAY support additional mechanisms of the simple and Implementations MAY support additional mechanisms of the simple and
SASL bind choices. Some of these mechanisms are discussed below. SASL bind choices. Some of these mechanisms are discussed below.
LDAP server implementations SHOULD support client assertion of LDAP server implementations SHOULD support client assertion of
authorization identity via the SASL EXTERNAL mechanism (sections authorization identity via the SASL EXTERNAL mechanism (sections
3.2.2 and 9). 3.2.2 and 9).
LDAP server implementations SHOULD support the StartTLS operation,
and server implementations that do support the StartTLS operation
MUST support the TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA ciphersuite.
3. Start TLS Operation 3. Start TLS Operation
The Start Transport Layer Security (Start TLS) operation defined in The Start Transport Layer Security (Start TLS) operation defined in
section 4.14 of [Protocol] provides the ability to establish TLS section 4.14 of [Protocol] provides the ability to establish TLS
[TLS] on an LDAP connection. [TLS] on an LDAP connection.
3.1. Sequencing of the Start TLS Operation 3.1. Sequencing of the Start TLS Operation
This section describes the overall procedures clients and servers This section describes the overall procedures clients and servers
must follow for TLS establishment. These procedures take into must follow for TLS establishment. These procedures take into
skipping to change at page 8, line 10 skipping to change at page 8, line 19
Start TLS operation request. Start TLS operation request.
If the client did not establish a TLS connection before sending a If the client did not establish a TLS connection before sending a
request and the server requires the client to establish a TLS request and the server requires the client to establish a TLS
connection before performing that request, the server MUST reject connection before performing that request, the server MUST reject
that request by sending a resultCode of confidentialityRequired. that request by sending a resultCode of confidentialityRequired.
3.1.2. Start TLS Response 3.1.2. Start TLS Response
The server will return an extended response with the resultCode of The server will return an extended response with the resultCode of
success if it is willing and able to negotiate TLS. It will return success if it is willing and able to negotiate TLS.
resultCode other than success (documented in [Protocol] section
4.13.2.2) if it is unwilling or unable to do so. It will return a resultCode other than success (documented in
[Protocol] section 4.13.2.2) if it is unwilling or unable to do so.
The client's current association is unaffected if a non-success
resultCode is returned.
In the successful case, the client (which has ceased to transfer In the successful case, the client (which has ceased to transfer
LDAP requests on the connection) MUST either begin a TLS negotiation LDAP requests on the connection) MUST either begin a TLS negotiation
or close the connection. The client will send PDUs in the TLS Record or close the connection. The client will send PDUs in the TLS Record
Protocol directly over the underlying transport connection to the Protocol directly over the underlying transport connection to the
server to initiate [TLS] negotiation. server to initiate [TLS] negotiation.
3.1.3. TLS Version Negotiation 3.1.3. TLS Version Negotiation
Negotiating the version of TLS to be used is a part of the TLS Negotiating the version of TLS to be used is a part of the TLS
skipping to change at page 9, line 10 skipping to change at page 9, line 23
The client MUST check its understanding of the server's hostname The client MUST check its understanding of the server's hostname
against the server's identity as presented in the server's against the server's identity as presented in the server's
Certificate message in order to prevent man-in-the-middle attacks. Certificate message in order to prevent man-in-the-middle attacks.
Matching is performed according to these rules: Matching is performed according to these rules:
- The client MUST use the server name provided by the user (or - The client MUST use the server name provided by the user (or
other trusted entity) as the value to compare against the server other trusted entity) as the value to compare against the server
name as expressed in the server's certificate. A hostname name as expressed in the server's certificate. A hostname
derived from the user input is to be considered provided by the derived from user input is to be considered provided by the user
user only if derived in a secure fashion (e.g., DNSSEC). only if derived in a secure fashion (e.g., DNSSEC).
- If a subjectAltName extension of type dNSName is present in the - If a subjectAltName extension of type dNSName is present in the
certificate, it SHOULD be used as the source of the server's certificate, it SHOULD be used as the source of the server's
identity. identity.
- Matching is case-insensitive. - The string values to be compared MUST be prepared according to
the rules described in [Matching].
- The "*" wildcard character is allowed. If present, it applies - The "*" wildcard character is allowed. If present, it applies
only to the left-most name component. only to the left-most name component.
For example, *.bar.com would match a.bar.com and b.bar.com, but For example, *.bar.com would match a.bar.com and b.bar.com, but
it would not match a.x.bar.com nor would it match bar.com. If it would not match a.x.bar.com nor would it match bar.com. If
more than one identity of a given type is present in the more than one identity of a given type is present in the
certificate (e.g. more than one dNSName name), a match in any certificate (e.g. more than one dNSName name), a match in any
one of the set is considered acceptable. one of the set is considered acceptable.
skipping to change at page 10, line 33 skipping to change at page 10, line 48
that its certificate exchanged during the TLS establishment be that its certificate exchanged during the TLS establishment be
utilized to determine the authorization identity of the LDAP utilized to determine the authorization identity of the LDAP
association. The client accomplishes this via an LDAP Bind request association. The client accomplishes this via an LDAP Bind request
specifying a SASL mechanism of EXTERNAL [SASL] (section 9). specifying a SASL mechanism of EXTERNAL [SASL] (section 9).
3.2.3. TLS Connection Closure Effects 3.2.3. TLS Connection Closure Effects
The decision to keep or invalidate the established LDAP association The decision to keep or invalidate the established LDAP association
after TLS closure is a matter of local server policy. after TLS closure is a matter of local server policy.
3.3. TLS Ciphersuites
Several issues should be considered when selecting TLS ciphersuites
that are appropriate for use in a given circumstance. These issues
include the following:
- The ciphersuite's ability to provide adequate confidentiality
protection for passwords and other data sent over the LDAP
connection. Client and server implementers should recognize that
some TLS ciphersuites provide no confidentiality protection
while other ciphersuites that do provide confidentiality
protection may be vulnerable to being cracked using brute force
methods, especially in light of ever-increasing CPU speeds that
reduce the time needed to successfully mount such attacks.
Client and server implementers should carefully consider the
value of the password or data being protected versus the level
of confidentially protection provided by the ciphersuite to
ensure that the level of protection afforded by the ciphersuite
is appropriate.
- The ciphersuite's vulnerability (or lack thereof) to man-in-the-
middle attacks. Ciphersuites vulnerable to man-in-the-middle
attacks SHOULD NOT be used to protect passwords or sensitive
data, unless the network configuration is such that the danger
of a man-in-the-middle attack is tolerable.
3.3.1. TLS Ciphersuites Recommendations
[[TODO: Kurt will have someone from security to look at this and
will propose how to handle discussion of specific TLS ciphersuites
in this draft.]]
As of the writing of this document, the following recommendations
regarding TLS ciphersuites are applicable. Because circumstances are
constantly changing, this list must not be considered exhaustive,
but is hoped that it will serve as a useful starting point for
implementers.
The following ciphersuites defined in [TLS] MUST NOT be used for
confidentiality protection of passwords or data:
TLS_NULL_WITH_NULL_NULL
TLS_RSA_WITH_NULL_MD5
TLS_RSA_WITH_NULL_SHA
The following ciphersuites defined in [TLS] can be cracked easily
(less than a day of CPU time on a standard CPU in 2000) and are NOT
RECOMMENDED for use in confidentiality protection of passwords or
data:
TLS_RSA_EXPORT_WITH_RC4_40_MD5
TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5
TLS_RSA_EXPORT_WITH_DES40_CBC_SHA
TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA
TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA
TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
TLS_DH_anon_EXPORT_WITH_RC4_40_MD5
TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA
The following ciphersuites are vulnerable to man-in-the-middle
attacks:
TLS_DH_anon_EXPORT_WITH_RC4_40_MD5
TLS_DH_anon_WITH_RC4_128_MD5
TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA
TLS_DH_anon_WITH_DES_CBC_SHA
TLS_DH_anon_WITH_3DES_EDE_CBC_SHA
4. LDAP Associations 4. LDAP Associations
Every LDAP connection has an associated authentication and Every LDAP connection has an associated authentication and
authorization state referred to as the "LDAP association". The Bind authorization state referred to as the "LDAP association". The Bind
operation defined in section 4.2 of [Protocol] and discussed further operation defined in section 4.2 of [Protocol] and discussed further
in section 5 below allows authentication information to be exchanged in section 5 below allows authentication information to be exchanged
between the client and server to set the authentication and between the client and server to set the authentication and
authorization state and thus establish a new LDAP association. authorization state and thus establish a new LDAP association.
4.1. Anonymous LDAP Association on Unbound Connections 4.1. Anonymous LDAP Association on Unbound Connections
Prior to the successful completion of a Bind operation and during Prior to the successful completion of a Bind operation and during
any subsequent authentication exchange, the session has an anonymous any subsequent authentication exchange, the session has an anonymous
LDAP association. Among other things this implies that the client LDAP association. Among other things this implies that the client
need not send a Bind Request in the first PDU of the connection. The need not send a Bind Request in the first PDU of the connection. The
client may send any operation request prior to binding, and the client may send any operation request prior to binding, and the
server MUST treat it as if it had been performed after an anonymous server MUST treat it as if it had been performed after an anonymous
bind operation (section 6). This authentication state on an LDAP bind operation (section 6). This authentication state on an LDAP
association is sometimes referred to as an implied anonymous bind. association is sometimes referred to as an implied anonymous bind.
4.2 Anonymous LDAP Association After Failed Bind 4.2. Anonymous LDAP Association After Failed Bind
Upon receipt of a Bind request, the LDAP association is moved to an Upon receipt of a Bind request, the LDAP association is moved to an
anonymous state and only upon successful completion of the anonymous state and only upon successful completion of the
authentication exchange (and the Bind operation) is the association authentication exchange (and the Bind operation) is the association
moved to an authenticated state. Thus, a failed Bind operation moved to an authenticated state. Thus, a failed Bind operation
produces an anonymous LDAP association on the session. produces an anonymous LDAP association on the session.
4.3. Invalidated Associations 4.3. Invalidated Associations
The server may invalidate the LDAP association at any time, e.g. if The server may invalidate the LDAP association at any time, e.g. if
skipping to change at page 13, line 5 skipping to change at page 14, line 35
and the server is willing to provide service to the entity these and the server is willing to provide service to the entity these
credentials identify. credentials identify.
Server behavior is undefined for Bind requests with a zero-length Server behavior is undefined for Bind requests with a zero-length
name value and specifying the simple authentication choice with a name value and specifying the simple authentication choice with a
value of non-zero length. value of non-zero length.
The simple authentication mechanism of simple bind is not suitable The simple authentication mechanism of simple bind is not suitable
for authentication in environments where there is no network or for authentication in environments where there is no network or
transport layer confidentiality. LDAP implementations MUST be transport layer confidentiality. LDAP implementations MUST be
capable of protecting it by establishment of TLS (as discussed in capable of protecting it by establish::qment of TLS (as discussed in
section 3) or other suitable data confidentiality and data integrity section 3) or other suitable data confidentiality and data integrity
protection(e.g. IPSec). LDAP implementations protection(e.g. IPSec). LDAP implementations
SHOULD support authentication with the "simple" authentication SHOULD support authentication with the "simple" authentication
choice when the connection is protected against eavesdropping using choice when the connection is protected against eavesdropping using
TLS, as defined in section 4. LDAP implementations SHOULD NOT TLS, as defined in section 4. LDAP implementations SHOULD NOT
support authentication with the "simple" authentication choice support authentication with the "simple" authentication choice
unless the data on the connection is protected using TLS or other unless the data on the connection is protected using TLS or other
data confidentiality and data integrity protection. data confidentiality and data integrity protection.
9. SASL Protocol Profile 9. SASL Protocol Profile
skipping to change at page 14, line 12 skipping to change at page 15, line 39
client to send a new bind request with the same sasl mechanism to client to send a new bind request with the same sasl mechanism to
continue the authentication process. continue the authentication process.
To the LDAP protocol, these challenges and responses are opaque To the LDAP protocol, these challenges and responses are opaque
binary tokens of arbitrary length. LDAP servers use the binary tokens of arbitrary length. LDAP servers use the
serverSaslCreds field, an OCTET STRING, in a bind response message serverSaslCreds field, an OCTET STRING, in a bind response message
to transmit each challenge. LDAP clients use the credentials field, to transmit each challenge. LDAP clients use the credentials field,
an OCTET STRING, in the SaslCredentials sequence of a bind request an OCTET STRING, in the SaslCredentials sequence of a bind request
message to transmit each response. Note that unlike some Internet message to transmit each response. Note that unlike some Internet
protocols where SASL is used, LDAP is not text-based, thus no Base64 protocols where SASL is used, LDAP is not text-based, thus no Base64
transformati ons are performed on these challenge and response transformations are performed on these challenge and response values.
values.
Clients sending a bind request with the sasl choice selected SHOULD Clients sending a bind request with the sasl choice selected SHOULD
send an zero-length value in the name field. Servers receiving a send an zero-length value in the name field. Servers receiving a
bind request with the sasl choice selected SHALL ignore any value in bind request with the sasl choice selected SHALL ignore any value in
the name field. the name field.
A client may abort a SASL bind negotiation by sending a BindRequest A client may abort a SASL bind negotiation by sending a BindRequest
with a different value in the mechanism field of SaslCredentials, or with a different value in the mechanism field of SaslCredentials, or
an AuthenticationChoice other than sasl. an AuthenticationChoice other than sasl.
If the client sends a BindRequest with the sasl mechanism field as If the client sends a BindRequest with the sasl mechanism field as
an empty string, the server MUST return a BindResponse with an empty string, the server MUST return a BindResponse with
authMethodNotSupported as the resultCode. This will allow clients to authMethodNotSupported as the resultCode. This will allow clients to
abort a negotiation if it wishes to try again with the same SASL abort a negotiation if it wishes to try again with the same SASL
mechanism. mechanism.
The server indicates completion of the SASL challenge-response The server indicates completion of the SASL challenge-response
exchange by responding with a bind response in which the resultCode exchange by responding with a bind response in which the resultCode
is either success, or an error indication. is either success, or an error indication.
The serverSaslCreds field in the bind response can be used to The serverSaslCreds field in the BindResponse can be used to include
include an optional challenge with a success notification for an optional challenge with a success notification for mechanisms
mechanisms which are defined to have the server send additional data which are defined to have the server send additional data along with
along with the indication of successful completion. the indication of successful completion. If a server does not intend
to send a challenge value in a BindResponse message, the server
[[TODO: Some implementations send back a serverSaslCreds field with SHALL omit the serverSaslCreds field (rather than including the
zero length rather than just omitting it as part of the final bind field with a zero-length value).
response. Some clients expect this present/zero-length behavior.
Need to provide clarification at this point of the document on what
behavior is expected and what servers and clients should do to
promote interoperability when unexpected behavior occurs. This issue
is being taken up with the SASL WG. Likely outcome: both approaches
will be declared equivalent, servers will be advised to send back
present, zero-length field, clients will be advised to accept
either.]]
9.3. Octet Where Negotiated Security Mechanisms Take Effect 9.3. Octet Where Negotiated Security Mechanisms Take Effect
SASL security layers take effect following the transmission by the SASL security layers take effect following the transmission by the
server and reception by the client of the final successful server and reception by the client of the final successful
BindResponse in the exchange. BindResponse in the exchange.
Once a SASL security layer providing integrity or confidentiality Once a SASL security layer providing integrity or confidentiality
services takes effect, the layer remains in effect until a new layer services takes effect, the layer remains in effect until a new layer
is installed (i.e. at the first octet following the final is installed (i.e. at the first octet following the final
skipping to change at page 17, line 21 skipping to change at page 18, line 41
supporting other forms of the authzId production. supporting other forms of the authzId production.
The dnAuthzId choice is used to assert authorization identities in The dnAuthzId choice is used to assert authorization identities in
the form of a distinguished name to be matched in accordance with the form of a distinguished name to be matched in accordance with
the distinguishedNameMatch matching rule [Syntaxes]. The decision to the distinguishedNameMatch matching rule [Syntaxes]. The decision to
allow or disallow an authentication identity to have access to the allow or disallow an authentication identity to have access to the
requested authorization identity is a matter of local policy ([SASL] requested authorization identity is a matter of local policy ([SASL]
section 4.2). For this reason there is no requirement that the section 4.2). For this reason there is no requirement that the
asserted dn be that of an entry in the directory. asserted dn be that of an entry in the directory.
The uAuthzId choice allows for compatibility with clients that wish The uAuthzId choice allows clients to assert an authorization
to assert an authorization identity to a directory but do not have identity that is not in distinguished name form. The format of
that identity in distinguished name form. The value contained within userid is defined as only a sequence of UTF-8 [RFC3629] encoded
a uAuthzId MUST be prepared using [SASLPrep] before being compared [Unicode] characters, and any further interpretation is a local
octet-wise. The format of userid is defined as only a sequence of matter. To compare uAuthzID values, each uAuthzID value MUST be
UTF-8 [RFC3629] encoded [Unicode] characters, and further prepared using [SASLPrep] and then the two values are compared
interpretation is subject to prior agreement between the client and octet-wise.
server.
For example, the userid could identify a user of a specific For example, the userid could identify a user of a specific
directory service or be a login name or the local-part of an RFC 822 directory service, be a login name, or be an email address. A
email address. A uAuthzId SHOULD NOT be assumed to be globally uAuthzId SHOULD NOT be assumed to be globally unique.
unique.
11. SASL DIGEST-MD5 Mechanism 11. SASL DIGEST-MD5 Mechanism
LDAP servers that implement any authentication method or mechanism LDAP servers that implement any authentication method or mechanism
other than simple anonymous bind MUST implement the SASL other than simple anonymous bind MUST implement the SASL
DIGEST-MD5 mechanism [DIGEST-MD5]. This provides client DIGEST-MD5 mechanism [DIGEST-MD5]. This provides client
authentication with protection against passive eavesdropping attacks authentication with protection against passive eavesdropping attacks
but does not provide protection against man-in-the-middle attacks. but does not provide protection against man-in-the-middle attacks.
DIGEST-MD5 also provides data integrity and data confidentiality DIGEST-MD5 also provides data integrity and data confidentiality
capabilities. capabilities.
skipping to change at page 18, line 12 skipping to change at page 19, line 31
and realm values that look like LDAP DNs in form, e.g. <cn=bob, and realm values that look like LDAP DNs in form, e.g. <cn=bob,
dc=example,dc=com>, are syntactically allowed, however DIGEST-MD5 dc=example,dc=com>, are syntactically allowed, however DIGEST-MD5
treats them as simple strings for comparison purposes. To illustrate treats them as simple strings for comparison purposes. To illustrate
further, the two DNs <cn=Bob,dc=example,dc=com> (upper case "B") and further, the two DNs <cn=Bob,dc=example,dc=com> (upper case "B") and
<cn=bob,dc=example,dc=com> (lower case "b") are equivalent when <cn=bob,dc=example,dc=com> (lower case "b") are equivalent when
being compared semantically as LDAP DNs because the cn attribute is being compared semantically as LDAP DNs because the cn attribute is
defined to be case insensitive, however the two values are not defined to be case insensitive, however the two values are not
equivalent if they represent username values in DIGEST-MD5 because equivalent if they represent username values in DIGEST-MD5 because
[SASLPrep] semantics are used by DIGEST-MD5. [SASLPrep] semantics are used by DIGEST-MD5.
12. General Requirements for Password Handling 12. Security Considerations
Security issues are discussed throughout this document. The
unsurprising conclusion is that security is an integral and
necessary part of LDAP. This section discusses a number of LDAP-
related security considerations.
12.1. General LDAP Security Considerations
LDAP itself provides no security or protection from accessing or
updating the directory by other means than through the LDAP
protocol, e.g. from inspection by database administrators. Access
control SHOULD always be applied when reading sensitive information
or updating directory information.
Servers can minimize denial of service attacks by timing out idle
connections, and returning the unwillingToPerform resultCode rather
than performing computationally expensive operations requested by
unauthorized clients.
A connection on which the client has not established connection
integrity and privacy services (e.g via StartTLS, IPSec or a
suitable SASL mechanism) is subject to man-in-the-middle attacks to
view and modify information in transit. Client and server
implementors SHOULD take measures to protect confidential data from
these attacks by using data protection services as discussed in this
document.
12.1.1.Password-related Security Considerations
LDAP allows multi-valued password attributes. In systems where
entries are expected to have one and only one password,
administrative controls should be provided to enforce this behavior.
The use of clear text passwords and other unprotected authentication
credentials is strongly discouraged over open networks when the
underlying transport service cannot guarantee confidentiality.
The transmission of passwords in the clear--typically for The transmission of passwords in the clear--typically for
authentication or modification--poses a significant security risk. authentication or modification--poses a significant security risk.
This risk can be avoided by using SASL authentication [SASL] This risk can be avoided by using SASL authentication [SASL]
mechanisms that do not transmit passwords in the clear or by mechanisms that do not transmit passwords in the clear or by
negotiating transport or session layer confidentiality services negotiating transport or session layer confidentiality services
before transmitting password values. before transmitting password values.
To mitigate the security risks associated with the use of passwords, To mitigate the security risks associated with the transfer of
a server implementation that supports any password-based passwords, a server implementation that supports any password-based
authentication mechanism MUST implement a configuration that at the authentication mechanism that transmits passwords in the clear MUST
time of authentication or password modification, requires: support a policy mechanism that at the time of authentication or
password modification, requires:
1) A Start TLS encryption layer has been successfully negotiated. A StartTLS encryption layer has been successfully negotiated.
OR OR
2) Some other confidentiality mechanism that protects the password Some other confidentiality mechanism that protects the password
value from snooping has been provided. value from snooping has been provided.
OR OR
3) The server returns a resultCode of confidentialityRequired for The server returns a resultCode of confidentialityRequired for
the operation (i.e. simple bind with password value, SASL bind the operation (i.e. simple bind with password value, SASL bind
transmitting a password value in the clear, add or modify transmitting a password value in the clear, add or modify
including a userPassword value, etc.), even if the password including a userPassword value, etc.), even if the password
value is correct. value is correct.
13. TLS Ciphersuites 12.2. StartTLS Security Considerations
A client or server implementation that supports TLS MUST support
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA. Servers SHOULD NOT support weaker
ciphersuites unless other data integrity and confidentiality
protection (such as a SASL security layer) is in place.
Several issues should be considered when selecting TLS ciphersuites
that are appropriate for use in a given circumstance. These issues
include the following:
- The ciphersuite's ability to provide adequate confidentiality
protection for passwords and other data sent over the LDAP
connection. Client and server implementers should recognize that
some TLS ciphersuites provide no confidentiality protection
while other ciphersuites that do provide confidentiality
protection may be vulnerable to being cracked using brute force
methods, especially in light of ever-increasing CPU speeds that
reduce the time needed to successfully mount such attacks.
Client and server implementers SHOULD carefully consider the
value of the password or data being protected versus the level
of confidentially protection provided by the ciphersuite to
ensure that the level of protection afforded by the ciphersuite
is appropriate.
- The ciphersuite's vulnerability (or lack thereof) to man-in-the-
middle attacks. Ciphersuites vulnerable to man-in-the-middle
attacks SHOULD NOT be used to protect passwords or sensitive
data, unless the network configuration is such that the danger
of a man-in-the-middle attack is tolerable.
13.1. TLS Ciphersuites Recommendations
As of the writing of this document, the following recommendations
regarding TLS ciphersuites are applicable. Because circumstances are
constantly changing, this list must not be considered exhaustive,
but is hoped that it will serve as a useful starting point for
implementers.
The following ciphersuites defined in [TLS] MUST NOT be used for
confidentiality protection of passwords or data:
TLS_NULL_WITH_NULL_NULL
TLS_RSA_WITH_NULL_MD5
TLS_RSA_WITH_NULL_SHA
The following ciphersuites defined in [TLS] can be cracked easily
(less than a day of CPU time on a standard CPU in 2000) and are NOT
RECOMMENDED for use in confidentiality protection of passwords or
data.
TLS_RSA_EXPORT_WITH_RC4_40_MD5
TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5
TLS_RSA_EXPORT_WITH_DES40_CBC_SHA
TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA
TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA
TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
TLS_DH_anon_EXPORT_WITH_RC4_40_MD5
TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA
The following ciphersuites are vulnerable to man-in-the-middle
attacks:
TLS_DH_anon_EXPORT_WITH_RC4_40_MD5
TLS_DH_anon_WITH_RC4_128_MD5
TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA
TLS_DH_anon_WITH_DES_CBC_SHA
TLS_DH_anon_WITH_3DES_EDE_CBC_SHA
14. Security Considerations
Security issues are discussed throughout this memo; the unsurprising
conclusion is that mandatory security is important and that session
confidentiality protection is required when snooping is a problem.
Servers can minimize denial of service attacks by timing out idle
connections, and returning the unwillingToPerform resultCode rather
than performing computationally expensive operations requested by
unauthorized clients.
The use of cleartext passwords and other unprotected authentication
credentials is strongly discouraged over open networks when the
underlying transport service cannot guarantee confidentiality.
Operational experience shows that clients can (and frequently do)
misuse unauthenticated bind (see section 5.1). For example, a
client program might make a decision to grant access to non-
directory information on the basis of completing a successful bind
operation. Some LDAP server implementations will return a success
response to an unauthenticated bind thus leaving the client with the
impression that the server has successfully authenticated the
identity represented by the user name, when in effect, an anonymous
LDAP association has been created. Clients that use the results from
a simple bind operation to make authorization decisions should
actively detect unauthenticated bind requests (by verifying that the
supplied password is not empty) and react appropriately.
Access control SHOULD always be applied when reading sensitive
information or updating directory information.
A connection on which the client has not established connection
integrity and privacy services (e.g via Start TLS, IPSec or a
suitable SASL mechanism) is subject to man-in-the-middle attacks to
view and modify information in transit.
LDAP itself provides no security or protection from accessing or
updating the directory by other means than through the LDAP
protocol, e.g. from inspection by database administrators.
Client and server implementors SHOULD take measures to protect
credentials and other confidential data by using data protection
services as discussed in this document.
Additional security considerations relating to the various
authentication methods and mechanisms discussed in this document
apply and can be found in [DIGEST-MD5], [SASL], [SASLPrep],
[StringPrep], [TLS] and [RFC3629].
14.1. Start TLS Security Considerations
The goals of using the TLS [TLS] protocol with LDAP are to ensure The goals of using the TLS [TLS] protocol with LDAP are to ensure
connection confidentiality and integrity, and to optionally provide connection confidentiality and integrity, and to optionally provide
for authentication. TLS expressly provides these capabilities for authentication. TLS expressly provides these capabilities
(although the authentication services of TLS are available to LDAP (although the authentication services of TLS are available to LDAP
only in combination with the SASL EXTERNAL authentication method, only in combination with the SASL EXTERNAL authentication method,
and then only if the SASL EXTERNAL implementation chooses to make and then only if the SASL EXTERNAL implementation chooses to make
use of the TLS credentials). use of the TLS credentials).
All security gained via use of the Start TLS operation is gained by All security gained via use of the Start TLS operation is gained by
the use of TLS itself. The Start TLS operation, on its own, does not the use of TLS itself. The Start TLS operation, on its own, does not
provide any additional security. provide any additional security.
The level of security provided though the use of TLS depends The level of security provided though the use of TLS depends
directly on both the quality of the TLS implementation used and the directly on both the quality of the TLS implementation used and the
style of usage of that implementation. Additionally, an man-in-the- style of usage of that implementation. Additionally, a man-in-the-
middle attacker can remove the Start TLS extended operation from the middle attacker can remove the Start TLS extended operation from the
supportedExtension attribute of the root DSE. Both parties SHOULD supportedExtension attribute of the root DSE. Both parties SHOULD
independently ascertain and consent to the security level achieved independently ascertain and consent to the security level achieved
once TLS is established and before beginning use of the TLS once TLS is established and before beginning use of the TLS
connection. For example, the security level of the TLS connection connection. For example, the security level of the TLS connection
might have been negotiated down to plaintext. might have been negotiated down to plaintext.
Clients SHOULD either warn the user when the security level achieved Clients SHOULD either warn the user when the security level
does not provide data confidentiality and/or integrity protection, achieved does not provide data confidentiality and/or integrity
or be configurable to refuse to proceed without an acceptable level protection, or be configurable to refuse to proceed without an
of security. acceptable level of security.
Server implementors SHOULD allow for server administrators to elect Server implementors SHOULD allow server administrators to elect
whether and when connection confidentiality and/or integrity is whether and when data confidentiality and integrity are required, as
required, as well as elect whether and when client authentication well as elect whether TLS authentication of the client is required.
via TLS is required.
Implementers should be aware of and understand TLS security Implementers should be aware of and understand TLS security
considerations as discussed in the TLS specification [TLS]. considerations as discussed in the TLS specification [TLS].
15. IANA Considerations 12.3. Unauthenticated Mechanism Security Considerations
Operational experience shows that clients can (and frequently do)
misuse the unauthenticated authentication mechanism of simple bind
(see section 7). For example, a client program might make a
decision to grant access to non-directory information on the basis
of completing a successful bind operation. LDAP server
implementations will return a success response to an unauthenticated
bind request thus leaving the client with the impression that the
server has successfully authenticated the identity represented by
the user name, when in effect, an anonymous LDAP association has
been established. Clients that use the results from a simple bind
operation to make authorization decisions should actively detect
unauthenticated bind requests (by verifying that the supplied
password is not empty) and react appropriately.
12.4. Simple Mechanism Security Considerations
The simple authentication mechanism of simple bind discloses the
password to server, which is an inherent security risk. There are
other mechanisms such as DIGEST-MD5 that do not disclose password to
server.
12.5. SASL DIGEST-MD5 Mechanism Security Considerations
The SASL DIGEST-MD5 mechanism is prone to the qop substitution
attack, as discussed in 6.2 of RFC 2831. The qop substitution
attack can be mitigated (as discussed in 6.2 of RFC 2831).
The SASL DIGEST-MD5 mechanism [DIGEST-MD5] provides client
authentication with protection against passive eavesdropping attacks
but does not provide protection against man-in-the-middle attacks.
Implementers should be aware of and understand DIGEST-MD5 security
considerations as discussed in the DIGEST-MD5 specification [DIGEST-
MD5].
12.6. Related Security Considerations
Additional security considerations relating to the various
authentication methods and mechanisms discussed in this document
apply and can be found in [SASL], [SASLPrep], [StringPrep] and
[RFC3629].
13. IANA Considerations
The following IANA considerations apply to this document: The following IANA considerations apply to this document:
Please update the GSSAPI service name registry to point to [Roadmap] Please update the GSSAPI service name registry to point to [Roadmap]
and this document. and this document.
[To be completed] [[TODO: add any missing IANA Considerations.]]
Acknowledgments Acknowledgments
This document combines information originally contained in RFC 2829 This document combines information originally contained in RFC 2829
and RFC 2830. The editor acknowledges the work of Harald Tveit and RFC 2830. The editor acknowledges the work of Harald Tveit
Alvestrand, Jeff Hodges, Tim Howes, Steve Kille, RL "Bob" Morgan , Alvestrand, Jeff Hodges, Tim Howes, Steve Kille, RL "Bob" Morgan ,
and Mark Wahl, each of whom authored one or more of these documents. and Mark Wahl, each of whom authored one or more of these documents.
This document is based upon input of the IETF LDAP Revision working This document is based upon input of the IETF LDAP Revision working
group. The contributions and suggestions made by its members in group. The contributions and suggestions made by its members in
skipping to change at page 22, line 26 skipping to change at page 22, line 55
Authentication as a SASL Mechanism", draft-ietf-sasl- Authentication as a SASL Mechanism", draft-ietf-sasl-
rfc2831bis-xx.txt, a work in progress. rfc2831bis-xx.txt, a work in progress.
[RFC2119] Bradner, S., "Key Words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key Words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[LDAPDN] Zeilenga, Kurt D. (editor), "LDAP: String [LDAPDN] Zeilenga, Kurt D. (editor), "LDAP: String
Representation of Distinguished Names", draft-ietf- Representation of Distinguished Names", draft-ietf-
ldapbis-dn-xx.txt, a work in progress. ldapbis-dn-xx.txt, a work in progress.
[Matching] Hoffman, Paul and Steve Hanna, "Matching Text Strings
in PKIX Certificates", draft-hoffman-pkix-stringmatch-
xx.txt, a work in progress.
[Models] Zeilenga, Kurt D. (editor), "LDAP: Directory [Models] Zeilenga, Kurt D. (editor), "LDAP: Directory
Information Models", draft-ietf-ldapbis-models-xx.txt, Information Models", draft-ietf-ldapbis-models-xx.txt,
a work in progress. a work in progress.
[Protocol] Sermersheim, J., "LDAP: The Protocol", draft-ietf- [Protocol] Sermersheim, J., "LDAP: The Protocol", draft-ietf-
ldapbis-protocol-xx.txt, a work in progress. ldapbis-protocol-xx.txt, a work in progress.
[Roadmap] K. Zeilenga, "LDAP: Technical Specification Road Map", [Roadmap] K. Zeilenga, "LDAP: Technical Specification Road Map",
draft-ietf-ldapbis-roadmap-xx.txt, a work in progress. draft-ietf-ldapbis-roadmap-xx.txt, a work in progress.
[SASL] Melnikov, A. (editor), "Simple Authentication and [SASL] Melnikov, A. (editor), "Simple Authentication and
Security Layer (SASL)", draft-ietf-sasl-rfc2222bis- Security Layer (SASL)", draft-ietf-sasl-rfc2222bis-
xx.txt, a work in progress. xx.txt, a work in progress.
[SASLPrep] Zeilenga, K., "Stringprep profile for user names and [SASLPrep] Zeilenga, K., "Stringprep profile for user names and
passwords", draft-ietf-sasl-saslprep-xx.txt, (a work in passwords", draft-ietf-sasl-saslprep-xx.txt, (a work in
progress). progress).
[StringPrep] Hoffman P. and M. Blanchet, "Preparation of [StringPrep] M. Blanchet, "Preparation of Internationalized
Internationalized Strings ('stringprep')", draft- Strings ('stringprep')", draft-hoffman-rfc3454bis-
hoffman-rfc3454bis-xx.txt, a work in progress. xx.txt, a work in progress.
[Syntaxes] Legg, S. (editor), "LDAP: Syntaxes and Matching Rules", [Syntaxes] Legg, S. (editor), "LDAP: Syntaxes and Matching Rules",
draft-ietf-ldapbis-syntaxes-xx.txt, a work in progress. draft-ietf-ldapbis-syntaxes-xx.txt, a work in progress.
[TLS] Dierks, T. and C. Allen. "The TLS Protocol Version [TLS] Dierks, T. and C. Allen. "The TLS Protocol Version
1.1", draft-ietf-tls-rfc2246-bis-xx.txt, a work in 1.1", draft-ietf-tls-rfc2246-bis-xx.txt, a work in
progress. progress.
[RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO
10646", RFC 3629, STD 63, November 2003. 10646", RFC 3629, STD 63, November 2003.
skipping to change at page 25, line 38 skipping to change at page 26, line 18
D2=no D2=no
A6, S4 A6, S4
D1=yes, D1=yes,
D2=yes D2=yes
A7 no [Protocol] section 4.14.2.2 A7 no [Protocol] section 4.14.2.2
change change
A8 no [Protocol] section 4.14.2.1 A8 no [Protocol] section 4.14.2.1
change change
A9 S1 [Protocol] section 4.14.3.1 A9 S1 [Protocol] section 4.14.3.1
Appendix B. Example Deployment Scenarios Appendix B. Authentication and Authorization Concepts
The following scenarios are typical for LDAP directories on the
Internet, and have different security requirements. (In the
following discussion, "sensitive data" refers to information whose
disclosure, alteration, destruction, or loss would adversely affect
the interests or business of its owner or user. Also note that there
may be data that is protected but not sensitive.) This is not
intended to be a comprehensive list; other scenarios are possible,
especially on physically protected networks.
(1) A read-only directory, containing no sensitive data, accessible
to "anyone", and TCP connection hijacking or IP spoofing is not
a problem. Anonymous authentication, described in section 7, is
suitable for this type of deployment, and requires no additional
security functions except administrative service limits.
(2) A read-only directory containing no sensitive data; read access
is granted based on identity. TCP connection hijacking is not
currently a problem. This scenario requires data confidentiality
for sensitive authentication information AND data integrity for
all authentication information.
(3) A read-only directory containing no sensitive data; and the
client needs to ensure the identity of the directory server and
that the directory data is not modified while being returned
from the server. A data origin authentication service AND data
integrity service are required.
(4) A read-write directory, containing no sensitive data; read
access is available to "anyone", update access to properly
authorized persons. TCP connection hijacking is not currently a
problem. This scenario requires data confidentiality for
sensitive authentication information AND data integrity for all
authentication information.
(5) A directory containing sensitive data. This scenario requires
data confidentiality protection AND secure authentication.
Appendix C. Authentication and Authorization Concepts
This appendix defines basic terms, concepts, and interrelationships This appendix defines basic terms, concepts, and interrelationships
regarding authentication, authorization, credentials, and identity. regarding authentication, authorization, credentials, and identity.
These concepts are used in describing how various security These concepts are used in describing how various security
approaches are utilized in client authentication and authorization. approaches are utilized in client authentication and authorization.
C.1. Access Control Policy B.1. Access Control Policy
An access control policy is a set of rules defining the protection An access control policy is a set of rules defining the protection
of resources, generally in terms of the capabilities of persons or of resources, generally in terms of the capabilities of persons or
other entities accessing those resources. Security objects and other entities accessing those resources. Security objects and
mechanisms, such as those described here, enable the expression of mechanisms, such as those described here, enable the expression of
access control policies and their enforcement. access control policies and their enforcement.
C.2. Access Control Factors B.2. Access Control Factors
A request, when it is being processed by a server, may be associated A request, when it is being processed by a server, may be associated
with a wide variety of security-related factors (section 4.2 of with a wide variety of security-related factors (section 4.2 of
[Protocol]). The server uses these factors to determine whether and [Protocol]). The server uses these factors to determine whether and
how to process the request. These are called access control factors how to process the request. These are called access control factors
(ACFs). They might include source IP address, encryption strength, (ACFs). They might include source IP address, encryption strength,
the type of operation being requested, time of day, etc. Some the type of operation being requested, time of day, etc. Some
factors may be specific to the request itself, others may be factors may be specific to the request itself, others may be
associated with the connection via which the request is transmitted, associated with the connection via which the request is transmitted,
others (e.g. time of day) may be "environmental". others (e.g. time of day) may be "environmental".
Access control policies are expressed in terms of access control Access control policies are expressed in terms of access control
factors. E.g., a request having ACFs i,j,k can perform operation Y factors. E.g., a request having ACFs i,j,k can perform operation Y
on resource Z. The set of ACFs that a server makes available for on resource Z. The set of ACFs that a server makes available for
such expressions is implementation-specific. such expressions is implementation-specific.
C.3. Authentication, Credentials, Identity B.3. Authentication, Credentials, Identity
Authentication credentials are the evidence supplied by one party to Authentication credentials are the evidence supplied by one party to
another, asserting the identity of the supplying party (e.g. a user) another, asserting the identity of the supplying party (e.g. a user)
who is attempting to establish an association with the other party who is attempting to establish an association with the other party
(typically a server). Authentication is the process of generating, (typically a server). Authentication is the process of generating,
transmitting, and verifying these credentials and thus the identity transmitting, and verifying these credentials and thus the identity
they assert. An authentication identity is the name presented in a they assert. An authentication identity is the name presented in a
credential. credential.
There are many forms of authentication credentials -- the form used There are many forms of authentication credentials -- the form used
depends upon the particular authentication mechanism negotiated by depends upon the particular authentication mechanism negotiated by
the parties. For example: X.509 certificates, Kerberos tickets, the parties. For example: X.509 certificates, Kerberos tickets,
simple identity and password pairs. Note that an authentication simple identity and password pairs. Note that an authentication
mechanism may constrain the form of authentication identities used mechanism may constrain the form of authentication identities used
with it. with it.
C.4. Authorization Identity B.4. Authorization Identity
An authorization identity is one kind of access control factor. It An authorization identity is one kind of access control factor. It
is the name of the user or other entity that requests that is the name of the user or other entity that requests that
operations be performed. Access control policies are often expressed operations be performed. Access control policies are often expressed
in terms of authorization identities; e.g., entity X can perform in terms of authorization identities; e.g., entity X can perform
operation Y on resource Z. operation Y on resource Z.
The authorization identity bound to an association is often exactly The authorization identity bound to an association is often exactly
the same as the authentication identity presented by the client, but the same as the authentication identity presented by the client, but
it may be different. SASL allows clients to specify an authorization it may be different. SASL allows clients to specify an authorization
skipping to change at page 27, line 41 skipping to change at page 27, line 36
client's credentials. This permits agents such as proxy servers to client's credentials. This permits agents such as proxy servers to
authenticate using their own credentials, yet request the access authenticate using their own credentials, yet request the access
privileges of the identity for which they are proxying [SASL]. Also, privileges of the identity for which they are proxying [SASL]. Also,
the form of authentication identity supplied by a service like TLS the form of authentication identity supplied by a service like TLS
may not correspond to the authorization identities used to express a may not correspond to the authorization identities used to express a
server's access control policy, requiring a server-specific mapping server's access control policy, requiring a server-specific mapping
to be done. The method by which a server composes and validates an to be done. The method by which a server composes and validates an
authorization identity from the authentication credentials supplied authorization identity from the authentication credentials supplied
by a client is implementation-specific. by a client is implementation-specific.
Appendix D. RFC 2829 Change History Appendix C. RFC 2829 Change History
This appendix lists the changes made to the text of RFC 2829 in This appendix lists the changes made to the text of RFC 2829 in
preparing this document. preparing this document.
D.0. General Editorial Changes C.0. General Editorial Changes
Version -00 Version -00
- Changed other instances of the term LDAP to LDAP where v3 of the - Changed other instances of the term LDAP to LDAP where v3 of the
protocol is implied. Also made all references to LDAP use the protocol is implied. Also made all references to LDAP use the
same wording. same wording.
- Miscellaneous grammatical changes to improve readability. - Miscellaneous grammatical changes to improve readability.
- Made capitalization in section headings consistent. - Made capitalization in section headings consistent.
skipping to change at page 28, line 4 skipping to change at page 27, line 53
- Changed other instances of the term LDAP to LDAP where v3 of the - Changed other instances of the term LDAP to LDAP where v3 of the
protocol is implied. Also made all references to LDAP use the protocol is implied. Also made all references to LDAP use the
same wording. same wording.
- Miscellaneous grammatical changes to improve readability. - Miscellaneous grammatical changes to improve readability.
- Made capitalization in section headings consistent. - Made capitalization in section headings consistent.
Version -01 Version -01
- Changed title to reflect inclusion of material from RFC 2830 and - Changed title to reflect inclusion of material from RFC 2830 and
2251. 2251.
D.1. Changes to Section 1 C.1. Changes to Section 1
Version -01 Version -01
- Moved conventions used in document to a separate section. - Moved conventions used in document to a separate section.
D.2. Changes to Section 2 C.2. Changes to Section 2
Version -01 Version -01
- Moved section to an appendix. - Moved section to an appendix.
D.3. Changes to Section 3 C.3. Changes to Section 3
Version -01 Version -01
- Moved section to an appendix. - Moved section to an appendix.
D.4 Changes to Section 4 C.4 Changes to Section 4
Version -00 Version -00
- Changed "Distinguished Name" to "LDAP distinguished name". - Changed "Distinguished Name" to "LDAP distinguished name".
D.5. Changes to Section 5 C.5. Changes to Section 5
Version -00 Version -00
- Added the following sentence: "Servers SHOULD NOT allow clients - Added the following sentence: "Servers SHOULD NOT allow clients
with anonymous authentication to modify directory entries or with anonymous authentication to modify directory entries or
access sensitive information in directory entries." access sensitive information in directory entries."
D.5.1. Changes to Section 5.1 C.5.1. Changes to Section 5.1
Version -00 Version -00
- Replaced the text describing the procedure for performing an - Replaced the text describing the procedure for performing an
anonymous bind (protocol) with a reference to section 4.2 of RFC anonymous bind (protocol) with a reference to section 4.2 of RFC
2251 (the protocol spec). 2251 (the protocol spec).
Version -01 Version -01
- Brought text describing procedure for performing an anonymous - Brought text describing procedure for performing an anonymous
bind from section 4.2 of RFC 2251 bis. This text will be bind from section 4.2 of RFC 2251 bis. This text will be
removed from the draft standard version of that document. removed from the draft standard version of that document.
D.6. Changes to Section 6. C.6. Changes to Section 6.
Version -00 Version -00
Reorganized text in section 6.1 as follows: Reorganized text in section 6.1 as follows:
1. Added a new section (6.1) titled "Simple Authentication" and 1. Added a new section (6.1) titled "Simple Authentication" and
moved one of two introductory paragraphs for section 6 into moved one of two introductory paragraphs for section 6 into
section 6.1. Added sentences to the paragraph indicating: section 6.1. Added sentences to the paragraph indicating:
a. simple authentication is not suitable for environments where a. simple authentication is not suitable for environments where
confidentiality is not available. confidentiality is not available.
b. LDAP implementations SHOULD NOT support simple b. LDAP implementations SHOULD NOT support simple
skipping to change at page 29, line 21 skipping to change at page 29, line 16
confidentiality is not available. confidentiality is not available.
b. LDAP implementations SHOULD NOT support simple b. LDAP implementations SHOULD NOT support simple
authentication unless confidentiality and data integrity authentication unless confidentiality and data integrity
mechanisms are in force. mechanisms are in force.
2. Moved first paragraph of section 6 (beginning with "LDAP 2. Moved first paragraph of section 6 (beginning with "LDAP
implementations MUST support authentication with a password...") implementations MUST support authentication with a password...")
to section on Digest Authentication (Now section 6.2). to section on Digest Authentication (Now section 6.2).
D.6.1. Changes to Section 6.1. C.6.1. Changes to Section 6.1.
Version -00 Renamed section to 6.2 Version -00 Renamed section to 6.2
- Added sentence from original section 6 indicating that the - Added sentence from original section 6 indicating that the
DIGEST-MD5 SASL mechanism is required for all conforming LDAP DIGEST-MD5 SASL mechanism is required for all conforming LDAP
implementations implementations
D.6.2. Changes to Section 6.2 C.6.2. Changes to Section 6.2
Version -00 Version -00
- Renamed section to 6.3 - Renamed section to 6.3
- Reworded first paragraph to remove reference to user and the - Reworded first paragraph to remove reference to user and the
userPassword password attribute Made the first paragraph more userPassword password attribute Made the first paragraph more
general by simply saying that if a directory supports simple general by simply saying that if a directory supports simple
authentication that the simple bind operation MAY performed authentication that the simple bind operation MAY performed
following negotiation of a TLS ciphersuite that supports following negotiation of a TLS ciphersuite that supports
skipping to change at page 29, line 51 skipping to change at page 29, line 46
- Replaced "the name of the user's entry" with "a DN" since not - Replaced "the name of the user's entry" with "a DN" since not
all bind operations are performed on behalf of a "user." all bind operations are performed on behalf of a "user."
- Added Section 6.3.1 heading just prior to paragraph 5. - Added Section 6.3.1 heading just prior to paragraph 5.
- Paragraph 5: replaced "The server" with "DSAs that map the DN - Paragraph 5: replaced "The server" with "DSAs that map the DN
sent in the bind request to a directory entry with a sent in the bind request to a directory entry with a
userPassword attribute." userPassword attribute."
D.6.3. Changes to section 6.3. C.6.3. Changes to section 6.3.
Version -00 Version -00
- Renamed to section 6.4. - Renamed to section 6.4.
D.7. Changes to section 7. C.7. Changes to section 7.
none none
D.7.1. Changes to section 7.1. C.7.1. Changes to section 7.1.
Version -00 Version -00
- Clarified the entity issuing a certificate by moving the phrase - Clarified the entity issuing a certificate by moving the phrase
"to have issued the certificate" immediately after "to have issued the certificate" immediately after
"Certification Authority." "Certification Authority."
D.8. Changes to section 8. C.8. Changes to section 8.
Version -00 Version -00
- Removed the first paragraph because simple authentication is - Removed the first paragraph because simple authentication is
covered explicitly in section 6. covered explicitly in section 6.
- Added section 8.1. heading just prior to second paragraph. - Added section 8.1. heading just prior to second paragraph.
- Added section 8.2. heading just prior to third paragraph. - Added section 8.2. heading just prior to third paragraph.
- Added section 8.3. heading just prior to fourth paragraph. - Added section 8.3. heading just prior to fourth paragraph.
Version -01 Version -01
- Moved entire section 8 of RFC 2829 into section 3.4 (Using SASL - Moved entire section 8 of RFC 2829 into section 3.4 (Using SASL
for Other Security Services) to bring material on SASL for Other Security Services) to bring material on SASL
mechanisms together into one location. mechanisms together into one location.
D.9. Changes to section 9. C.9. Changes to section 9.
Version -00 Version -00
- Paragraph 2: changed "EXTERNAL mechanism" to "EXTERNAL SASL - Paragraph 2: changed "EXTERNAL mechanism" to "EXTERNAL SASL
mechanism." mechanism."
- Added section 9.1. heading. - Added section 9.1. heading.
- Modified a comment in the ABNF from "unspecified userid" to - Modified a comment in the ABNF from "unspecified userid" to
"unspecified authz id". "unspecified authz id".
skipping to change at page 31, line 5 skipping to change at page 30, line 55
- Added section 9.1.1. heading. - Added section 9.1.1. heading.
- Added section 9.1.2. heading. - Added section 9.1.2. heading.
Version -01 Version -01
- Moved entire section 9 to become section 3.5 so that it would be - Moved entire section 9 to become section 3.5 so that it would be
with other SASL material. with other SASL material.
D.10. Changes to Section 10. C.10. Changes to Section 10.
Version -00 Version -00
- Updated reference to cracking from a week of CPU time in 1997 to - Updated reference to cracking from a week of CPU time in 1997 to
be a day of CPU time in 2000. be a day of CPU time in 2000.
- Added text: "These ciphersuites are NOT RECOMMENDED for use... - Added text: "These ciphersuites are NOT RECOMMENDED for use...
and server implementers SHOULD" to sentence just prior the and server implementers SHOULD" to sentence just prior the
second list of ciphersuites. second list of ciphersuites.
- Added text: "and MAY support other ciphersuites offering - Added text: "and MAY support other ciphersuites offering
equivalent or better protection," to the last paragraph of the equivalent or better protection," to the last paragraph of the
section. section.
skipping to change at page 31, line 20 skipping to change at page 31, line 15
be a day of CPU time in 2000. be a day of CPU time in 2000.
- Added text: "These ciphersuites are NOT RECOMMENDED for use... - Added text: "These ciphersuites are NOT RECOMMENDED for use...
and server implementers SHOULD" to sentence just prior the and server implementers SHOULD" to sentence just prior the
second list of ciphersuites. second list of ciphersuites.
- Added text: "and MAY support other ciphersuites offering - Added text: "and MAY support other ciphersuites offering
equivalent or better protection," to the last paragraph of the equivalent or better protection," to the last paragraph of the
section. section.
D.11. Changes to Section 11. C.11. Changes to Section 11.
Version -01 Version -01
- Moved to section 3.6 to be with other SASL material. - Moved to section 3.6 to be with other SASL material.
D.12. Changes to Section 12. C.12. Changes to Section 12.
Version -00 Version -00
- Inserted new section 12 that specifies when SASL protections - Inserted new section 12 that specifies when SASL protections
begin following SASL negotiation, etc. The original section 12 begin following SASL negotiation, etc. The original section 12
is renumbered to become section 13. is renumbered to become section 13.
Version -01 Version -01
- Moved to section 3.7 to be with other SASL material. - Moved to section 3.7 to be with other SASL material.
D.13. Changes to Section 13 (original section 12). C.13. Changes to Section 13 (original section 12).
None None
Appendix E. RFC 2830 Change History Appendix D. RFC 2830 Change History
This appendix lists the changes made to the text of RFC 2830 in This appendix lists the changes made to the text of RFC 2830 in
preparing this document. preparing this document.
E.0. General Editorial Changes D.0. General Editorial Changes
- Material showing the PDUs for the Start TLS response was broken - Material showing the PDUs for the Start TLS response was broken
out into a new section. out into a new section.
- The wording of the definition of the Start TLS request and Start - The wording of the definition of the StartTLS request and
TLS response was changed to make them parallel. NO changes were StartTLS response was changed to make them parallel. NO changes
made to the ASN.1 definition or the associated values of the were made to the ASN.1 definition or the associated values of
parameters. the parameters.
- A separate section heading for graceful TLS closure was added - A separate section heading for graceful TLS closure was added
for parallelism with section on abrupt TLS closure. for parallelism with section on abrupt TLS closure.
Appendix F. RFC 2251 Change History Appendix E. RFC 2251 Change History
This appendix lists the changes made to the text of RFC 2251 in This appendix lists the changes made to the text of RFC 2251 in
preparing this document. preparing this document.
F.0. General Editorial Changes E.0. General Editorial Changes
- All material from section 4.2 of RFC 2251 was moved into this - All material from section 4.2 of RFC 2251 was moved into this
document. document.
- A new section was created for the Bind Request - A new section was created for the Bind Request
- Section 4.2.1 of RFC 2251 (Sequencing Bind Request) was moved - Section 4.2.1 of RFC 2251 (Sequencing Bind Request) was moved
after the section on the Bind Response for parallelism with the after the section on the Bind Response for parallelism with the
presentation of the Start TLS operations. The section was also presentation of the Start TLS operations. The section was also
subdivided to explicitly call out the various effects being subdivided to explicitly call out the various effects being
described within it. described within it.
- All SASL profile information from RFC 2829 was brought within - All SASL profile information from RFC 2829 was brought within
the discussion of the Bind operation (primarily sections 4.4 - the discussion of the Bind operation (primarily sections 4.4 -
4.7). 4.7).
Appendix G. Change History to Combined Document Appendix F. Change History to Combined Document
G.1. Changes for draft-ldap-bis-authmeth-02 F.1. Changes for draft-ldap-bis-authmeth-02
General General
- Added references to other LDAP standard documents, to sections - Added references to other LDAP standard documents, to sections
within the document, and fixed broken references. within the document, and fixed broken references.
- General editorial changes--punctuation, spelling, formatting, - General editorial changes--punctuation, spelling, formatting,
etc. etc.
Section 1. Section 1.
skipping to change at page 33, line 33 skipping to change at page 33, line 27
- Added LDAP Association State Transition Tables to show the - Added LDAP Association State Transition Tables to show the
various states through which an LDAP association may pass along various states through which an LDAP association may pass along
with the actions and decisions required to traverse from state with the actions and decisions required to traverse from state
to state. to state.
Appendix A Appendix A
- Brought security terminology in line with IETF security glossary - Brought security terminology in line with IETF security glossary
throughout the appendix. throughout the appendix.
G.2. Changes for draft-ldap-bis-authmeth-03 F.2. Changes for draft-ldapbis-authmeth-03
General General
- Added introductory notes and changed title of document and - Added introductory notes and changed title of document and
references to conform to WG chair suggestions for the overall references to conform to WG chair suggestions for the overall
technical specification. technical specification.
- Several issues--H.13, H.14, H.16, H.17--were resolved without - Several issues--H.13, H.14, H.16, H.17--were resolved without
requiring changes to the document. requiring changes to the document.
skipping to change at page 34, line 26 skipping to change at page 34, line 23
Section 11 Section 11
- Added security consideration regarding misuse of unauthenticated - Added security consideration regarding misuse of unauthenticated
access. access.
- Added security consideration requiring access control to be - Added security consideration requiring access control to be
applied only to authenticated users and recommending it be applied only to authenticated users and recommending it be
applied when reading sensitive information or updating directory applied when reading sensitive information or updating directory
information. information.
G.3. Changes for draft-ldap-bis-authmeth-04 F.3. Changes for draft-ldapbis-authmeth-04
General General
- Changed references to use [RFCnnnn] format wherever possible. - Changed references to use [RFCnnnn] format wherever possible.
(References to works in progress still use [name] format.) (References to works in progress still use [name] format.)
- Various edits to correct typos and bring field names, etc. in - Various edits to correct typos and bring field names, etc. in
line with specification in [Protocol] draft. line with specification in [Protocol] draft.
- Several issues--H.13, H.14, H.16, H.17--were resolved without - Several issues--H.13, H.14, H.16, H.17--were resolved without
requiring changes to the document. requiring changes to the document.
skipping to change at page 35, line 19 skipping to change at page 35, line 14
- Modified security consideration (originally added in -03) - Modified security consideration (originally added in -03)
requiring access control to be applied only to authenticated requiring access control to be applied only to authenticated
users. This seems nonsensical because anonymous users may have users. This seems nonsensical because anonymous users may have
access control applied to limit permissible actions. access control applied to limit permissible actions.
- -
Section 13 Section 13
- Verified all normative references and moved informative - Verified all normative references and moved informative
references to a new section 14. references to a new section 14.
G.4. Changes for draft-ldap-bis-authmeth-05 F.4. Changes for draft-ldapbis-authmeth-05
General General
- General editory changes to fix punctuation, spelling, line - General editory changes to fix punctuation, spelling, line
length issues, etc. length issues, etc.
- Verified and updated intra- and inter-document references - Verified and updated intra- and inter-document references
throughout. throughout.
- Document-wide review for proper usage of RFC 2119 keywords with - Document-wide review for proper usage of RFC 2119 keywords with
several changes to correct improper usage. several changes to correct improper usage.
skipping to change at page 37, line 16 skipping to change at page 37, line 10
- First paragraph: changed "session encryption" to "session - First paragraph: changed "session encryption" to "session
confidentiality protection" to be consistent with usage in rest confidentiality protection" to be consistent with usage in rest
of document. of document.
Appendix B. Appendix B.
- Began changes to incorporate information on deployment scenarios - Began changes to incorporate information on deployment scenarios
removed from section 3. removed from section 3.
G.5. Changes for draft-ldap-bis-authmeth-06 F.5. Changes for draft-ldapbis-authmeth-06
General General
- Combined Section 2 (Introduction) and Section 3 (Motivation) and - Combined Section 2 (Introduction) and Section 3 (Motivation) and
moved Introduction to section 1. All following sections numbers moved Introduction to section 1. All following sections numbers
were decremented by one as result. were decremented by one as result.
- Edits to fix typos, I-D nits, etc. - Edits to fix typos, I-D nits, etc.
- Opened several new issues in Appendix G based on feedback from - Opened several new issues in Appendix G based on feedback from
skipping to change at page 38, line 16 skipping to change at page 38, line 10
- Rewrote the section to make the advice more applicable over the - Rewrote the section to make the advice more applicable over the
long term, i.e. more "timeless." The intent of content in the long term, i.e. more "timeless." The intent of content in the
original section was preserved. original section was preserved.
Section 10 Section 10
- Added a clarifying example to the consideration regarding misuse - Added a clarifying example to the consideration regarding misuse
of unauthenticated access. of unauthenticated access.
G.6. Changes for draft-ldap-bis-authmeth-07 F.6. Changes for draft-ldapbis-authmeth-07
General General
- Updated external and internal references to accommodate changes - Updated external and internal references to accommodate changes
in recent drafts. in recent drafts.
- Opened several new issues in Appendix G based on feedback from - Opened several new issues in Appendix G based on feedback from
WG. Some of these have been resolved. Others require further WG. Some of these have been resolved. Others require further
discussion. discussion.
skipping to change at page 38, line 40 skipping to change at page 38, line 34
requirements of draft-ietf-sasl-rfc2222bis-xx.txt section 5. requirements of draft-ietf-sasl-rfc2222bis-xx.txt section 5.
- Changed treatement of SASL ANONYMOUS and PLAIN mechanisms to - Changed treatement of SASL ANONYMOUS and PLAIN mechanisms to
bring in line with WG consensus. bring in line with WG consensus.
Section 4 Section 4
- Note to implementers in section 4.1.1 based on operational - Note to implementers in section 4.1.1 based on operational
experience. experience.
- Clarification on client continuing by performing a Start TLS - Clarification on client continuing by performing a StartTLS with
with TLS already established in section 4.1.4. TLS already established in section 4.1.4.
- Moved verification of mapping of client's authentication ID to - Moved verification of mapping of client's authentication ID to
asserted authorization ID to apply only to explicit assertion. asserted authorization ID to apply only to explicit assertion.
The local policy in place for implicit assertion is adequate. The local policy in place for implicit assertion is adequate.
Section 7 Section 7
- Removed most of section 7.2 as the information is now covered - Removed most of section 7.2 as the information is now covered
adequately via the new SASL profile in section 3.3. Added note adequately via the new SASL profile in section 3.3. Added note
to implementors regarding the treatment of username and realm to implementors regarding the treatment of username and realm
values in DIGEST-MD5. values in DIGEST-MD5.
- Section 7.3. Minor clarifications in wording. - Section 7.3. Minor clarifications in wording.
- Section 7.3.1. Clarification that a match of the presented value - Section 7.3.1. Clarification that a match of the presented value
to any member of the set of stored passwords constitutes a to any member of the set of stored passwords constitutes a
successful authentication. successful authentication.
G.7. Changes for draft-ldap-bis-authmeth-08 F.7. Changes for draft-ldapbis-authmeth-08
General General
- Changed usage from LDAPv3 to LDAP for usage consistency across - Changed usage from LDAPv3 to LDAP for usage consistency across
LDAP technical specification. LDAP technical specification.
- Fixed a number of usage nits for consistency and to bring doc in - Fixed a number of usage nits for consistency and to bring doc in
conformance with publication guidelines. conformance with publication guidelines.
Abstract Abstract
- Significant cleanup and rewording of abstract based on WG - Significant cleanup and rewording of abstract based on WG
feedback. feedback.
skipping to change at page 40, line 12 skipping to change at page 40, line 4
- Simplified wording of first paragraph based on suggestion from - Simplified wording of first paragraph based on suggestion from
WG. WG.
Section 3.4 Section 3.4
- Minor clarifications in wording. - Minor clarifications in wording.
Section 3.4.1 Section 3.4.1
- Minor clarifications in wording in first sentence. - Minor clarifications in wording in first sentence.
- Explicitly called out that the DN value in the dnAuthzID form is - Explicitly called out that the DN value in the dnAuthzID form is
to be matched using DN matching rules. to be matched using DN matching rules.
- Called out that the uAuthzID MUST be prepared using SASLprep - Called out that the uAuthzID MUST be prepared using SASLprep
rules before being compared. rules before being compared.
- Clarified requirement on assuming global uniqueness by changing - Clarified requirement on assuming global uniqueness by changing
a "generally... MUST" wording to "SHOULD". a "generally... MUST" wording to "SHOULD".
Section 4.1.1 Section 4.1.1
- Simplified wording describing conditions when Start TLS cannot - Simplified wording describing conditions when StartTLS cannot be
be sent. sent.
- Simplified wording in note to implementers regarding race - Simplified wording in note to implementers regarding race
condition with outstanding LDAP operations on connection. condition with outstanding LDAP operations on connection.
Section 4.1.5 Section 4.1.5
- Removed section and moved relevant text to section 4.2.2. - Removed section and moved relevant text to section 4.2.2.
Section 4.1.6 Section 4.1.6
- Renumbered to 4.1.5. - Renumbered to 4.1.5.
skipping to change at page 41, line 5 skipping to change at page 40, line 52
- Added security consideration (moved from elsewhere) discouraging - Added security consideration (moved from elsewhere) discouraging
use of cleartext passwords on unprotected communication use of cleartext passwords on unprotected communication
channels. channels.
Section 11 Section 11
- Added an IANA consideration to update GSSAPI service name - Added an IANA consideration to update GSSAPI service name
registry to point to [Roadmap] and [Authmeth] registry to point to [Roadmap] and [Authmeth]
G.8. Changes for draft-ldap-bis-authmeth-09 F.8. Changes for draft-ldapbis-authmeth-09
General General
- Updated section references within document - Updated section references within document
- Changed reference tags to match other docs in LDAP TS - Changed reference tags to match other docs in LDAP TS
- Used non-quoted names for all SASL mechanisms - Used non-quoted names for all SASL mechanisms
Abstract Abstract
- Inspected keyword usage and removed several improper usages. - Inspected keyword usage and removed several improper usages.
- Removed sentence saying DIGEST-MD5 is LDAP's mandatory-to- - Removed sentence saying DIGEST-MD5 is LDAP's mandatory-to-
implement mechanism. This is covered elsewhere in document. implement mechanism. This is covered elsewhere in document.
- Moved section 5, authentication state table, of -08 draft to - Moved section 5, authentication state table, of -08 draft to
section 8 of -09 and completely rewrote it. section 8 of -09 and completely rewrote it.
skipping to change at page 42, line 41 skipping to change at page 42, line 33
method. method.
- Changed DNs in exmple to be dc=example,dc=com. - Changed DNs in exmple to be dc=example,dc=com.
Section 10 Section 10
- Updated consideration on use of cleartext passwords to include - Updated consideration on use of cleartext passwords to include
other unprotected authentication credentials other unprotected authentication credentials
- Substantial rework of consideration on misuse of unauthenticated - Substantial rework of consideration on misuse of unauthenticated
bind. bind.
G.9. Changes for draft-ldap-bis-authmeth-10 F.9. Changes for draft-ldapbis-authmeth-10
- Reorganized content of sections 3-9 to improve document flow and
reduce redundancy.
- Resolved issue of effect of Start TLS and TLS closure on LDAP
association state.
- Made numerous minor wording changes based on WG feedback.
- Updated list of threats for Section 1.
- Recommendation that servers should not support weaker TLS
ciphersuites unless other protection is in place.
- Moved authentication state table to appendix and relettered
appendices.
F.10. Changes for draft-ldapbis-authmeth-11
General General
- Many editorial changes throughout to clarify wording and better - Many editorial changes throughout to clarify wording and better
express intent, primarily based on suggestions from WG mail express intent, primarily based on suggestions from WG mail
list. list.
- More standard naming of authentication mechanisms throughout - More standard naming of authentication mechanisms throughout
document, e.g. "Anonymous Authentication Mechanism of the Simple document, e.g. "Anonymous Authentication Mechanism of the Simple
Bind Choice". Bind Choice".
skipping to change at page 43, line 44 skipping to change at page 43, line 49
- Added three security considerations based on WG feedback. - Added three security considerations based on WG feedback.
Appendix A Appendix A
- Simplfied state tables by removing two unnecessary actions from - Simplfied state tables by removing two unnecessary actions from
the actions table, and removing the current state column of the the actions table, and removing the current state column of the
state transition table. Updated references to authmeth and state transition table. Updated references to authmeth and
[Protocol]. [Protocol].
Appendix H. Issues to be Resolved F.11. Changes for draft-ldapbis-authmeth-12
This appendix lists open questions and issues that need to be
resolved before work on this document is deemed complete.
H.1.
Section 1 lists 6 security mechanisms that can be used by LDAP
servers. I'm not sure what mechanism 5, "Resource limitation by
means of administrative limits on service controls" means.
Status: resolved. Changed wording to "administrative service limits"
to clarify meaning.
H.2.
Section 2 paragraph 1 defines the term, "sensitive." Do we want to
bring this term and other security-related terms in alignment with
usage with the IETF security glossary (RFC 2828)?
Status: resolved. WG input at IETF 51 was that we should do this, so
the appropriate changes have been made.
H.3.
Section 2, deployment scenario 2: What is meant by the term "secure
authentication function?"
Status: resolved. Based on the idea that a "secure authentication
function" could be provided by TLS, I changed the wording to require
data confidentiality for sensitive authentication information and
data integrity for all authentication information.
H.4.
Section 3, deployment scenario 3: What is meant by the phrase,
"directory data is authenticated by the server?"
Status: resolved. I interpreted this to mean the ability to ensure
the identity of the directory server and the integrity of the data
sent from that server to the client, and explictly stated such.
H.5.
Section 4 paragraph 3: What is meant by the phrase, "this means that
either this data is useless for faking authentication (like the Unix
"/etc/passwd" file format used to be)?"
Status: resolved. Discussion at IETF 52 along with discussions with
the original authors of this material have convinced us that this
reference is simply too arcane to be left in place. In -03 the text
has been modified to focus on the need to either update password
information in a protected fashion outside of the protocol or to
update it in session well protected against snooping, and the
reference to /etc/passwd has been removed.
H.6.
Section 4 paragraph 7 begins: "For a directory needing session
protection..." Is this referring to data confidentiality or data
integrity or both?
Status: resolved. Changed wording to say, "For a directory needing
data security (both data integrity and data confidentiality)..."
H.7.
Section 4 paragraph 8 indicates that "information about the server
fetched prior to the TLS negotiation" must be discarded. Do we want
to explicitly state that this applies to information fetched prior
to the *completion* of the TLS negotiation or is this going too far?
Status: resolved. Based on comments in the IETF 51 LDAPBIS WG
meeting, this has been changed to explicitly state, "fetched prior
to the initiation of the TLS negotiation..."
H.8.
Section 4 paragraph 9 indicates that clients SHOULD check the
supportedSASLMechanisms list both before and after a SASL security
layer is negotiated to ensure that they are using the best available
security mechanism supported mutually by the client and server. A
note at the end of the paragraph indicates that this is a SHOULD
since there are environments where the client might get a list of
supported SASL mechanisms from a different trusted source.
I wonder if the intent of this could be restated more plainly using
one of these two approaches (I've paraphrased for the sake of
brevity):
Approach 1: Clients SHOULD check the supportedSASLMechanisms
list both before and after SASL negotiation or clients SHOULD
use a different trusted source to determine available supported
SASL mechanisms.
Approach 2: Clients MUST check the supportedSASLMechanisms list
both before and after SASL negotiation UNLESS they use a
different trusted source to determine available supported SASL
mechanisms.
Status: resolved. WG input at IETF 51 was that Approach 1 was
probably best. I ended up keeping the basic structure similar to the
original to meet this intent.
H.9.
Section 6.3.1 states: "DSAs that map the DN sent in the bind request
to a directory entry with a userPassword attribute will... compare
[each value in the named user's entry]... with the presented
password." This implies that this applies only to user entries with
userPassword attributes. What about other types of entries that
might allow passwords and might store in the password information in
other attributes? Do we want to make this text more general?
Status: resolved in -03 draft by generalizing section 8.3.1 to not
refer to any specific password attribute and by removing the term
"user" in referring to the directory entry specified by the DN in
the bind request.
H.10 userPassword and simple bind
We need to be sure that we don't require userPassword to be the only
attribute used for authenticating via simple bind. (See 2251 sec 4.2
and authmeth 6.3.1. Work with Jim Sermersheim on resolution to this.
On publication state something like: "This is the specific
implementation of what we discussed in our general reorg
conversation on the list." (Source: Kurt Zeilenga)
Status: resolved in -03 draft by generalizing section 8.3.1 to not
refer to any specific password attribute and by removing the term
"user" in referring to the directory entry specified by the DN in
the bind request.
H.11. Meaning of LDAP Association
The original RFC 2830 uses the term "LDAP association" in describing
a connection between an LDAP client and server regardless of the
state of TLS on that connection. This term needs to be defined or
possibly changed.
Status: resolved. at IETF 51 Bob Morgan indicated that the term
"LDAP association" was intended to distinguish the LDAP-level
connection from the TLS-level connection. This still needs to be
clarified somewhere in the draft. Added "LDAP association" to a
glossary in section 1.
H.12. Is DIGEST-MD5 mandatory for all implementations?
Reading 2829bis I think DIGEST-MD5 is mandatory ONLY IF your server
supports password based authentication...but the following makes it
sound mandatory to provide BOTH password authentication AND DIGEST-
MD5:
"6.2. Digest authentication
LDAP implementations MUST support authentication with a password
using the DIGEST-MD5 SASL mechanism for password protection, as
defined in section 6.1."
The thing is for acl it would be nice (though not critical) to be
able to default the required authentication level for a subject to a
single "fairly secure" mechanism--if there is no such mandatory
authentication scheme then you cannot do that. (Source: Rob Byrne)
Status: resolved. -00 version of the draft added a sentence at the
beginning of section 8.2 stating that LDAP server implementations
must support this method.
H.13. Ordering of authentication levels requested
Again on the subject of authentication level, is it possible to
define an ordering on authentication levels which defines their
relative "strengths" ? This would be useful in acl as you could say
things like"a given aci grants access to a given subject at this
authentication level AND ABOVE". David Chadwick raised this before
in the context of denying access to a subject at a given
authentication level, in which case he wanted to express "deny
access to this subject at this authentication level AND TO ALL
IDENTITIES AUTHENTICATED BELOW THAT LEVEL". (Source: Rob Byrne)
Status: out of scope. This is outside the scope of this document and
will not be addressed.
H.14. Document vulnerabilities of various mechanisms
While I'm here...in 2829, I think it would be good to have some
comments or explicit reference to a place where the security
properties of the particular mandatory authentication schemes are
outlined. When I say "security properties" I mean stuff like "This
scheme is vulnerable to such and such attacks, is only safe if the
key size is > 50, this hash is widely considered the best, etc...".
I think an LDAP implementor is likely to be interested in that
information, without having to wade through the security RFCs.
(Source: Rob Byrne)
Status: out of scope. This is outside the scope of this document and
will not be addressed.
H.15. Include a Start TLS state transition table
The pictoral representation it is nominally based on is here (URL
possibly folded):
http://www.stanford.edu/~hodges/doc/LDAPAssociationStateDiagram-
1999-12-14.html
(Source: Jeff Hodges)
Status: Resolved.
Table provided in -03. Review of content for accuracy in -04.
Additional review is needed, plus comments from WG members indicate
that additional description of each state's meaning would be helpful.
Did a significant revision of state transition table in -09. Changes
were based on suggestions from WG and greatly simplified overall
table.
H.16. Empty sasl credentials question
I spent some more time looking microscopically at ldap-auth-methods
and ldap-ext-tls drafts. The drafts say that the credential must
have the form dn:xxx or u:xxx or be absent, and although they don't
say what to do in the case of an empty octet string I would say that
we could send protocolError (claim it is a bad PDU).
There is still the question of what to do if the credential is 'dn:'
(or 'u:') followed by the empty string. (Source: ariel@columbia.edu
via Jeff Hodges)
Status: resolved. Kurt Zeilenga indicated during ldapbis WG
discussion at IETF 52 that SASL AuthzID credentials empty and absent
are equivalent in the latest SASL ID. This resolves the issue.
H.17. Hostname check from MUST to SHOULD?
I am uneasy about the hostname check. My experience from PKI with
HTTP probably is a contributing factor; we have people using the
short hostname to get to a server which naturally has the FQDN in
the certificate, no end of problems. I have a certificate on my
laptop which has the FQDN for the case when the system is on our
Columbia network with a fixed IP; when I dial in however, I have
some horrible dialup name, and using the local https server becomes
annoying. Issuing a certificate in the name 'localhost' is not a
solution! Wildcard match does not solve this problem. For these
reasons I am inclined to argue for 'SHOULD' instead of
'MUST' in paragraph...
Also, The hostname check against the name in the certificate is a
very weak means of preventing man-in-the-middle attacks; the proper
solution is not here yet (SecureDNS or some equivalent). Faking out
DNS is not so hard, and we see this sort of thing in the press on a
pretty regular basis, where site A hijacks the DNS server for site B
and gets all their requests. Some mention of this should be made in
the draft. (Source: ariel@columbia.edu via Jeff Hodges)
Status: resolved. Based on discussion at IETF 52 ldapbis WG meeting,
this text will stand as it is. The check is a MUST, but the behavior
afterward is a SHOULD. This gives server implementations the room to
maneuver as needed.
H.18. Must SASL DN exist in the directory?
If the 'dn:' form of sasl creds is used, is it the intention of the
draft(ers) that this DN must exist in the directory and the client
will have the privileges associated with that entry, or can the
server map the sasl DN to perhaps some other DN in the directory,
in an implementation-dependent fashion?
We already know that if *no* sasl credentials are presented, the DN
or altname in the client certificate may be mapped to a DN in an
implementation-dependent fashion, or indeed to something not in the
directory at all. (Right?) (Source: ariel@columbia.edu via Jeff
Hodges)
Status: resolved. (11/12/02)Based on my research I propose that the
DN MUST exist in the directory when the DN form of sasl creds is
used. I have made this proposal to the ldapbis mailing list.
(11/21/02) Feedback from mailing list has proposed removing this
paragraph entirely because (1) explicit assertion of authorization
identity should only be done when proxying (2) mapping of the
asserted authorization identity is implementation specific and
policy driven [SASL] section 4.2, and (3) keeping this paragraph is
not required for interoperability.
H.19. DN used in conjunction with SASL mechanism
We need to specify whether the DN field in Bind operation can/cannot
be used when SASL mechanism is specified. (source: RL Bob)
Status: resolved. (-03) Based on ldapbis WG discussion at IETF52 two
sentences were added to section 4.3 indicating that clients SHOULD
NOT send a DN value when binding with the sasl choice and servers
SHALL ignore any value received in this circumstance. During edits
for -04 version of draft it was noted that [Protocol] section 4.2
conflicts with this draft. The editor of [Protocol] has been
notified of the discrepancy, and they have been handled.
H.20. Bind states
Differences between unauthenticated and anonymous. There are four
states you can get into. One is completely undefined (this is now
explicitly called out in [Protocol]). This text needs to be moved
from [Protocol] to this draft. (source: Jim Sermersheim)
Status: Resolved. There are four states: (1) no name, no password
(anon); (2) name, no password (anon); (3) no name, password
(invalid); (4) name, password (simple bind). States 1, 2, and 4 are
called out in [AuthMeth]. State 3 is called out in [Protocol]; this
seems appropriate based on review of alternatives.
H.21. Misuse of unauthenticated access
Add a security consideration that operational experience shows that
clients can misuse unauthenticated access (simple bind with name but
no password). Servers SHOULD by default reject authentication
requests that have a DN with an empty password with an error of
invalidCredentials. (Source: Kurt Zeilenga and Chris Newman (Sun))
Status: Resolved. Added to security considerations in -03.
H.22. Need to move Start TLS protocol information to [Protocol]
Status: Resolved. Removed Sections 5.1, 5.2, and 5.4 for -04 and
they are [Protocol] -11.
H.23. Split Normative and Non-normative references into separate
sections.
Status: Resolved. Changes made in -04
H.24. What is the authentication state if a Bind operation is abandoned?
Status: Resolved.
(3/24/03) This following text appears in section 4.2.1 of [Protocol]
revision -13 to cover what happens if a bind operation is abandoned:
A failed or abandoned Bind Operation has the effect of leaving the
connection in an anonymous state. To arrive at a known
authentication state after abandoning a bind operation, clients may
unbind, rebind, or make use of the BindResponse.
(6/28/03): The state table in section 6 of [AuthMeth] has been
updated to reflect this wording.
H.25. Difference between checking server hostname and server's
canonical DNS name in Server Identity Check?
Section 4.1.6: I now understand the intent of the check (prevent
man-in-the-middle attacks). But what is the subtle difference
between the "server hostname" and the "server's canonical DNS name"?
(Source: Tim Hahn)
Status: Resolved.
(11/12/02) Sent suggested wording change to this paragraph to the
ldapbis mail list and also asked for opinion as to whether we should
discuss the distinction between server DNS hostname and server
canonical DNS hostname in [AuthMeth].
(11/21/02): RL Bob Morgan will provide wording that allows
derivations of the name that are provided securely.
(6/28/03): posted to the WG list asking Bob or any other WG member
who is knowledgeable about the issues involved to help me with
wording or other information I can use to make this change and close
the work item.
(10/08/03): Based on WG list feedback, I've updated this text to
read what I judge to be the WG consensus, "The client MUST use the
server provided by the user (or other trusted entity) as the value
to compare against the server name as expressed in the server's
certificate. A hostname derived from the user input is to be
considered provided by the user only if derived in a secure fashion
(e.g., DNSSEC)."
H.26. Server Identity Check using servers located via SRV records
Section 4.1.6: What should be done if the server was found using SRV
records based on the "locate" draft/RFC? (Source: Tim Hahn).
Status: Resolved. Section 5 of draft-ietf-ldapext-locate-08
specifically calls out how the server identity should be performed
if the server is located using the method defined in that draft.
This is the right location for this information, and the coverage
appears to be adequate.
H.27 Inconsistency in effect of TLS closure on LDAP association.
Section 4.4.1 of authmeth -03 (section 4.1 of RFC2830) states that
TLS closure alert will leave the LDAP association intact. Contrast
this with Section 4.5.2 (section 5.2 of RFC2830) that says that the
closure of the TLS connection MUST cause the LDAP association to
move to an anonymous authentication.
Status: Resolved. (11/12/02) This is actually a [Protocol] issue
because these sections have now been moved to [Protocol] -11. I have
proposed the following text for Section 4.4.1 of [AuthMeth] -03
(section 4.13.3.1 of [Protocol]) to resolve this apparent
discrepancy:
"
Either the client or server MAY terminate the TLS connection on an
LDAP association by sending a TLS closure alert. The LDAP
connection remains open for further communication after TLS closure
occurs although the authentication state of the LDAP connection is
affected (see [AuthMeth] section 4.2.2).
(11/21/02): resolution to this is expected in [Protocol] -12
(06/28/03): [Protocol]-15 clarifies that a TLS closure alert
terminates the TLS connection while leaving the LDAP connection
intact. The authentication state table in [AuthMeth] specifies the
effect on the LDAP association.
H.28 Ordering of external sources of authorization identities
Section 4.3.2 implies that external sources of authorization
identities other than TLS are permitted. What is the behavior when
two external sources of authentication credentials are available
(e.g. TLS and IPsec are both present (is this possible?)) and a SASL
EXTERNAL Bind operation is performed?
Status: resolved. 11/20/02: Resolved by Section 4.2 of [SASL] which
states that the decision to allow or disallow the asserted identity
is based on an implementation defined policy.
H.29 Rewrite of Section 9, TLS Ciphersuites
This section contains anachronistic references and needs to be
updated/rewritten in a way that provides useful guidance for future
readers in a way that will transcend the passage of time.
Status: Resolved. (6/28/03): Rewrote the section to cover the
general issues and considerations involved in selecting TLS
ciphersuites.
H.30 Update to Appendix A, Example Deployment Scenarios
This section needs to be updated to indicate which security
mechanisms and/or combinations of security mechanisms described
elsewhere in the document can provide the types of protections
suggested in this appendix.
H.31 Use of PLAIN SASL Mechanism
At least one LDAP server implementer has found the SASL "PLAIN"
mechanism useful in authenticating to legacy systems that do not
represent authentication identities as DNs. Section 3.3.1 appears to
implicitly disallow the use of the SASL "PLAIN" mechanism with LDAP.
Should we allow the use of this mechanism? I.e. is this "SASL"
"PLAIN" MUST NOT be used with LDAP, or is it simply that LDAP
doesn't define bindings for these mechanism. If SASL "PLAIN" is
allowed, the following adjustments will be needed to section 3.3.1:
(a) change section heading, (b) remove reference to "PLAIN" in the
section, (c) ensure wording of last sentence regarding non-DN
AuthZIDs is consistent with rest of the section.
Status: Resolved.
(6/28/03): email to WG list stating issue and asking if we should
remove the reference to SASL "PLAIN".
For -07 draft I've generalized the SASL profile in section 3.3 to
allow any SASL mechanism.
H.32 Clarification on use of SASL mechanisms
Section 3.3.1: BTW, what _are_ the "ANONYMOUS" and "PLAIN" SASL
mechanisms? They are not defined in RFC2222. If you refer to other
SASL mechanisms than those in rfc2222, Maybe you should only list
which mechanisms _are_used, instead of which ones are _not. (Source:
Hallvard Furuseth)
I (Kurt Zeilenga) note[s] as well that the ANONYMOUS/PLAIN section
(4.2) should
be deleted. ANONYMOUS and PLAIN, like in other mechanism,
can be used in LDAP if a) supported and b) enabled. I note
that they each offer capabilities not found in their simple
bind equivalents (and hence are used in some deployments).
For example, PLAIN (over TLS) is quite useful when interacting
with legacy authentication subsystems. (Source: Kurt Zeilenga)
Status: Resolved.
For -07 draft I've generalized the SASL profile in section 3.3 to
allow any SASL mechanism.
H.33 Clarification on use of password protection based on AuthZID form
Section 3.3.1: "If an authorization identity of a form different
from a DN is requested by the client, a mechanism that protects the
password in transit SHOULD be used." What has that to do with DNs?
A mechanism that protects the password in transit should be used in
any case, shouldn't it?
Status: Resolved.
In -08 draft this text was removed. There is already a general
security consideration that covers this issue.
H.34 Clarification on use of matching rules in Server Identity Check
The text in section 4.1.6 isn't explicit on whether all rules apply
to both CN and dNSName values. The text should be clear as to which
rules apply to which values.... in particular, the wildcard
rules. (Source: Kurt Zeilenga)
H.35 Requested Additions to Security Considerations
Requested to mention hostile servers which the user might have been
fooled to into contacting. Which mechanisms that are standardized by
the LDAP standard do/do not disclose the user's password to the
server? (Or to servers doing man-in-the-middle attack? Or is that a
stupid question?)
Requested to mention denial of service attacks.
Requested list of methods that need/don't need the server to know
the user's plaintext password. (I say 'know' instead of 'store'
because it could still store the password encrypted, but in a way
which it knows how to decrypt.)
(Source: Hallvard Furuseth)
H.36 Add reference to definition of DIGEST-MD5
Need a reference to the definition of DIGEST-MD5 SASL mechanism in
section 7.2 (Source: Hallvard Furuseth)
Status: Resolved. A reference to to the DIGEST-MD5 SASL mechanism,
[DigestAuth], is included in the -07 revision.
H.37 Clarification on procedure for certificate-based authentication
8.1. Certificate-based authentication with TLS states: "Following
the successful completion of TLS negotiation, the client will send
an LDAP bind request with the SASL "EXTERNAL" mechanism." Is this
immediately following, or just some time later? Should the wording,
"the client will send..." actually read, "the client MUST send..."?
Status: Resolved. In -10 this text has been absorbed into the SASL
EXTERNAL mechanism section.
H.38 Effect of Start TLS on authentication state
Should the server drop all knowledge of connection, i.e. return to
anonymous state, if it gets a Start TLS request on a connection that
has successfully bound using the simple method?
Status: Resolved. In -09 the effect on an LDAP association by a
Start TLS operation is made a matter of local policy. This is based
on editorĘs perception of WG consensus gaged by conversations at
IETF 58 and subsequent discussion on the WG mail list.
H.39 Be sure that there is a consideration in [SCHEMA] that discusses
multiple password values in userPassword
Allowing multiple values obviously does raise a number of security
considerations and these need to be discussed in the document.
Certainly applications which intend to replace the userPassword with
new value(s) should use modify/replaceValues (or
modify/deleteAttribute+addAttribute). Additionally, server
implementations should be encouraged to provide administrative
controls which, if enabled, restrict userPassword to one value.
H.40. Clarify need to verify mapping between authentication identity
and resulting authorization identity on implicit assertion of AuthZID.
4.2.2.3. Error Conditions
"For either form of assertion, the server MUST verify that the
client's authentication identity as supplied in its TLS credentials
is permitted to be mapped to the asserted authorization identity."
This makes sense for the explicit assertion case, but seems to be
ambiguous for the implicit case.
IMHO, the mapping can be done as two steps:
a). deriving LDAP authentication identity from TLS credentials; If t
this steps fails, EXTERNAL mechanism returns failure.
b). verify that the authorization identity is allowed for the
derived authentication identity. This is always "noop" for the
implicit case.
I am not sure that the text is saying this.
(Source: Alexey Melnikov email 8/1/2003 5:30:43 PM)
Status: Resolved in -07. After reading the comments and the text of
the draft, I believe that this should be clarified. The local policy
used to map the AuthNID to the AuthZID in the implicit case is
sufficient and that no additional verification is useful or needed.
This text has been moved to apply only to the explicit assertion
case.
H.41. Section 7.2 contains unnecessary and misleading detail.
" I am not sure why this section is required in the document.
DIGEST-MD5 is defined in a separate document and there should be
nothing magical about its usage in LDAP. If DIGEST-MD5 description
creates confusion for LDAP implementors, let's fix the DIGEST-MD5
document! Also, this section tries to redefine DIGEST-MD5 behavior,
which is explicitly prohibited by the SASL specification."
(Source: Alexey Melnikov: email 8/1/2003 5:30:43 PM)
Status: Resolved.
After reading the comments and the text of the draft plus the
related text in draft-ietf-sasl-rfc2831bis-02.txt plus
http://www.ietf.org/internet-drafts/draft-ietf-sasl-rfc2222bis-
02.txt, I am inclined to agree with Alexey. In -07 I rewrote section
3.3 (SASL mechanisms) to match the profiling requirements
rfc2831bis. I then dramatically reduced the material in section 7.2
to a bare minimum and let the SASL profile stand on its own.
H.42. Does change for H.41 cause interoperability issue?
There is one issue with the way the authmeth draft is currently
written that changes the SASL DIGEST-MD5 behavior on the way the
server responds with the subsequent authentication information .
This has been documented in this fashion since RFC 2829 (section
6.1) was originally published and may cause an interoperability
issue at this point if it changed to follow the DIGEST-MD5 spec (as
it was in -07 of AuthMeth). Take this issue to the list.
Status: Resolved
(10/08/03) This item was discussed on the WG list between 5/2/03 and
5/9/03. Consensus apppears to support the notion that RFC 2829 was
in error and that the semantics of RFC 2831 are correct and should
be reflected in authmeth. This is already the case as of the -07
draft.
H.43. DIGEST-MD5 Realms recommendations for LDAP
From http://www.ietf.org/internet-drafts/draft-ietf-sasl-rfc2222bis-
02.txt: A protocol profile SHOULD provide a guidance how realms are
to be constructed and used in the protocol and MAY further restrict
its syntax and protocol-specific semantics."
I don't believe that any such guidance exists within the LDAP TS.
The most likely place for this to reside is in the authmeth draft.
Related email from Alexey Melnikov (8/4/2003 1:08:40 PM):
"The problem I have with the document is that it references realm
without explaining what it is (or at least some examples of valid
values). For LDAP, some recommendations should be given. For example:
1). Use a hardcoded string as the realm (one of the implementations
I worked on was doing that)
2). Use hostname (realm==host) or domain/cluster name (realm
includes multiple hosts).
3). Use a node in DIT above user entry, for example for "cn=Barbara
Jensen, ou=Accounting, o=Ace Industry, c=US"
and "cn=John Doe, ou=Accounting, o=Ace Industry, c=US" realm can be
"ou=Accounting, o=Ace Industry, c=US"
(or "o=Ace Industry, c=US"); for "cn=Gern Jensen, ou=Product
Testing,o=Ace Industry, c=US" realm can be "ou=Product Testing,
o=Ace Industry, c=US".
Of course other choices are possible.
Alexey
To summarize: I'd like authmeth to define a realm name for use with General
Digest-MD5 that corresponds to LDAP DNs known to this server.
Authzid is okay, but perhaps could be better put into context.
John McMeeking (5/12/2003) - Changed refererences from Start TLS to StartTLS.
- Removed Appendix B: Example Deployment Scenarios
- Removed Appendix H as all issues listed in the appendix are now
resolved.
Status: Resolved. Section 2
draft-ietf-sasl-rfc2222bis-03.txt no longer requires this - Added implementation requirement that server implementations
information in a SASL protocol. In addition, the ldapbis WG chairs that SUPPORT StartTLS MUST support the
have ruled this work out of scope. Individuals are welcome to make TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA ciphersuite.
submissions to provide guidance on the use of realm and realm values
in LDAP.
H.44. Use of DNs in usernames and realms in DIGEST-MD5 Section 3.1.2
In reading the discussion on the mailing list, I reach the following - Added wording clarifying that a client's association is
conclusions: unaffected if a non-success resultCode is returned in the
StartTLS response.
DIGEST-MD5 username and realm are simple strings. The syntax of Section 9.2
these strings allows strings that look like DNs in form, however,
DIGEST-MD5 treats them a simple strings for comparision purposes.
For example, the DNs cn=roger, o=US and cn=roger,o=us are equivalent
when being compared semantically as DNs, however, these would be
considered two different username values in DIGEST-MD5 because
simple octet-wise semantics (rather than DN semantics) are used to
compare username values in DIGEST-MD5. Ditto for realm values.
Status: Resolved. - Final paragraph of this section details requirements for
serverSaslCreds field when no challenge value is sent.
In -07 revision I added notes to implementors expressing this issue Section 10
in section 7.2.
H.45: Open Issue: Is Simple+TLS mandatory to implement? - Clarified language on uAuthzID usage.
Going forward, it would be much better to clarify that simple Section 12
+TLS is to be used for DN/password credentials and DIGEST-MD5
(or PLAIN+TLS) be used for username/password credentials. (Kurt
Zeilenga, 5/12/2003)
I don't believe you can mandate simple/TLS! At the time RFC 2829 was
debated, a large number on the WG wanted this. They did not get
their way because of the complexity of the solution. It was argued
that a password-based method would be better. I think they believed
it would still be DN/password, though. (Ron Ramsay, 5/12/2003)
This was officially opened as an issue by WG co-chair Kurt Zeilenga - Moved entire section into security considerations. New section
on 5/12/03. Little direct discussion has occurred since, however number is 12.1.1.
there has been significant discussion on the use of DN values as the - Reorganized security considerations by topic.
username for DIGEST-MD5. - Added several security considerations based on WG feedback.
Status: Resolved. Section 13
Based on WG list discussion, Kurt Zeilenga has gaged a lack of WG - Moved section to become section 3.3.
consensus that Simple+TLS should be mandatory to implement. No
further discussion is necessary.
Intellectual Property Rights Intellectual Property Rights
By submitting this Internet-Draft, I accept the provisions of
Section 3 of RFC 3667.
By submitting this Internet-Draft, I certify that any applicable
patent or other IPR claims of which I am aware have been disclosed,
and any of which I become aware will be disclosed, in accordance
with RFC 3668.
The IETF takes no position regarding the validity or scope of any The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed Intellectual Property Rights or other rights that might be claimed
to pertain to the implementation or use of the technology described to pertain to the implementation or use of the technology described
in this document or the extent to which any license under such in this document or the extent to which any license under such
rights might or might not be available; nor does it represent that rights might or might not be available; nor does it represent that
it has made any independent effort to identify any such rights. it has made any independent effort to identify any such rights.
Information on the procedures with respect to rights in RFC Information on the procedures with respect to rights in RFC
documents can be found in BCP 78 and BCP 79. documents can be found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any Copies of IPR disclosures made to the IETF Secretariat and any
 End of changes. 

This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/