]> git.sur5r.net Git - openldap/blob - doc/drafts/draft-ietf-ldapbis-authmeth-xx.txt
Fix prev commit, spawns unnecessary threads.
[openldap] / doc / drafts / draft-ietf-ldapbis-authmeth-xx.txt
1 INTERNET-DRAFT                                      Editor: R. Harrison
2 draft-ietf-ldapbis-authmeth-14.txt                         Novell, Inc.
3 Obsoletes: 2829, 2830                                    February, 2005
4 Intended Category: Draft Standard
5
6
7
8
9
10
11
12                       LDAP: Authentication Methods
13                                   and 
14                   Connection Level Security Mechanisms
15
16 Status of this Memo
17
18    By submitting this Internet-Draft, I accept the provisions of
19    Section 4 of RFC 3667.  By submitting this Internet-Draft, I certify
20    that any applicable patent or other IPR claims of which I am aware
21    have been disclosed, and any of which I become aware will be
22    disclosed, in accordance with RFC 3668.
23
24    This document is intended to be, after appropriate review and
25    revision, submitted to the RFC Editor as a Standard Track document.
26    Distribution of this memo is unlimited.  Technical discussion of
27    this document will take place on the IETF LDAP Revision Working
28    Group mailing list <ietf-ldapbis@OpenLDAP.org>.  Please send
29    editorial comments directly to the author
30    <roger_harrison@novell.com>.
31
32    Internet-Drafts are working documents of the Internet Engineering
33    Task Force (IETF), its areas, and its working groups.  Note that
34    other groups may also distribute working documents as Internet-
35    Drafts. 
36
37    Internet-Drafts are draft documents valid for a maximum of six
38    months and may be updated, replaced, or obsoleted by other documents
39    at any time.  It is inappropriate to use Internet-Drafts as
40    reference material or to cite them other than as "work in progress."
41
42    The list of current Internet-Drafts can be accessed at
43    http://www.ietf.org/ietf/1id-abstracts.txt 
44
45    The list of Internet-Draft Shadow Directories can be accessed at
46    http://www.ietf.org/shadow.html.
47
48 Copyright Notice
49
50    Copyright (C) The Internet Society (2004).  All Rights Reserved.
51
52 Abstract
53
54 Harrison                 Expires August 2005                 [Page 1]
55 \f
56 Internet-Draft       LDAP Authentication Methods        February 2005
57
58
59    This document describes authentication methods and connection level
60    security mechanisms of the Lightweight Directory Access Protocol
61    (LDAP). 
62
63    This document details establishment of TLS (Transport Layer
64    Security) using the StartTLS operation.
65
66    This document details the simple Bind authentication method
67    including anonymous, unauthenticated, and plain-text password
68    mechanisms and the SASL (Simple Authentication and Security Layer)
69    Bind authentication method including DIGEST-MD5 and EXTERNAL
70    mechanisms.
71
72    This document discusses various authentication and authorization
73    states through which a connection to an LDAP server may pass and the
74    actions that trigger these state changes.
75
76 Table of Contents
77
78    1. Introduction.....................................................3
79    1.1. Relationship to Other Documents................................5
80    1.2. Conventions....................................................5
81    2. Implementation Requirements......................................6
82    3. StartTLS Operation...............................................7
83    3.1. Sequencing of the StartTLS Operation...........................7
84    3.1.1. StartTLS Request ............................................7
85    3.1.2. StartTLS Response............................................8
86    3.1.3. TLS Version Negotiation......................................8
87    3.1.4. Client Certificate...........................................8
88    3.1.5. Discovery of Resultant Security Level........................8
89    3.1.6. Server Identity Check........................................9
90    3.1.7. Refresh of Server Capabilities Information...................9
91    3.2. Effects of TLS on a Client's Authorization Identity...........10
92    3.3. TLS Ciphersuites..............................................10
93    3.3.1. TLS Ciphersuites Recommendations............................10
94    4. Associations....................................................11
95    4.1. Anonymous Association on Unbound Connections..................11
96    4.2. Anonymous Association After Failed Bind.......................12
97    4.3. Invalidated Associations......................................12
98    5. Bind Operation..................................................12
99    5.1. Simple Authentication Choice..................................12
100    5.2. SASL Authentication Choice....................................12
101    6. Anonymous Authentication Mechanism of Simple Bind...............13
102    7. Unauthenticated Authentication Mechanism of Simple Bind.........13
103    8. Simple Authentication Mechanism of Simple Bind .................13
104    9. SASL Protocol Profile...........................................14
105    9.1. SASL Service Name for LDAP....................................14
106    9.2. SASL Authentication Initiation and Protocol Exchange..........14
107    9.3. Octet Where Negotiated Security Mechanisms Take Effect........15
108    9.4. Determination of Supported SASL Mechanisms....................15
109
110
111 Harrison                 Expires August 2005                 [Page 2]
112 \f
113 Internet-Draft       LDAP Authentication Methods        February 2005
114
115    9.5. Rules for Using SASL Layers...................................16
116    9.6 Support for Multiple Authentications...........................16
117    9.7. SASL Authorization Identities.................................16
118    10. SASL DIGEST-MD5 Authentication Mechanism.......................17
119    11. SASL EXTERNAL Authentication Mechanism.........................17
120    11.1. Implicit Assertion...........................................18
121    11.2. Explicit Assertion...........................................18
122    12. Security Considerations........................................18
123    12.1. General LDAP Security Considerations.........................18
124    12.1.1. Password-related Security Considerations...................19
125    12.2. StartTLS Security Considerations.............................20
126    12.3. Unauthenticated Mechanism Security Considerations............20
127    12.4. Simple Mechanism Security Considerations.....................21
128    12.5. SASL DIGEST-MD5 Mechanism Security Considerations............21
129    12.6. Related Security Considerations..............................21
130    13. IANA Considerations............................................21
131    Acknowledgments....................................................21
132    Normative References...............................................21
133    Informative References.............................................23
134    Author's Address...................................................23
135    Appendix A. Association State Transition Tables....................23
136    A.1. Association States............................................23
137    A.2. Actions that Affect Association State.........................24
138    A.3. Association State Transition Table............................24
139    Appendix B. Authentication and Authorization Concepts..............25
140    B.1. Access Control Policy.........................................25
141    B.2. Access Control Factors........................................25
142    B.3. Authentication, Credentials, Identity.........................25
143    B.4. Authorization Identity........................................25
144    Appendix C. RFC 2829 Change History................................26
145    Appendix D. RFC 2830 Change History................................30
146    Appendix E. RFC 2251 Change History................................30
147    Appendix F. Change History to Combined Document....................31
148    Intellectual Property Rights.......................................45
149
150
151 1. Introduction
152
153    The Lightweight Directory Access Protocol (LDAP) [Roadmap] is a
154    powerful protocol for accessing directories. It offers means of
155    searching, retrieving and manipulating directory content, and ways
156    to access a rich set of security functions.
157
158    It is vital that these security functions be interoperable among all
159    LDAP clients and servers on the Internet; therefore there has to be
160    a minimum subset of security functions that is common to all
161    implementations that claim LDAP conformance.
162
163    Basic threats to an LDAP directory service include:
164
165
166
167
168 Harrison                 Expires August 2005                 [Page 3]
169 \f
170 Internet-Draft       LDAP Authentication Methods        February 2005
171
172    (1) Unauthorized access to directory data via data-retrieval
173        operations.
174
175    (2) Unauthorized access to directory data by monitoring others'
176        access.
177
178    (3) Unauthorized access to reusable client authentication
179        information by monitoring others' access.
180
181    (4) Unauthorized modification of directory data.
182
183    (5) Unauthorized modification of configuration information,
184
185    (6) Denial of Service: Use of resources (commonly in excess) in a
186        manner intended to deny service to others.
187
188    (7) Spoofing: Tricking a user or client into believing that
189        information came from the directory when in fact it did not,
190        either by modifying data in transit or misdirecting the client's
191        connection. Tricking a user or client into sending privileged
192        information to a hostile entity that appears to be the directory
193        server but is not. Tricking a directory server into believing
194        that information came from a particular client when in fact it
195        came from a hostile entity.
196
197    (8) Hijacking: An attacker seizes control of an established protocol
198        session.
199
200    Threats (1), (4), (5), (6), (7) are (8) are active attacks. Threats
201    (2) and (3) are passive attacks.
202
203    Threats (1), (4), (5) and (6) are due to hostile clients. Threats
204    (2), (3), (7) and (8) are due to hostile agents on the path between
205    client and server or hostile agents posing as a server, e.g. IP
206    spoofing.
207
208    LDAP offers the following security mechanisms:
209
210    (1) Authentication by means of the Bind operation.  The Bind
211        operation provides a simple method which supports anonymous,
212        unauthenticated, and authenticated-with-password mechanisms, and
213        the Secure Authentication and Security Layer (SASL) method which
214        supports a wide variety of authentication mechanisms,
215
216    (2) Mechanisms to support vendor-specific access control facilities
217        (LDAP does not offer a standard access control facility)
218
219    (3) Data integrity protection by means of security layers in TLS or
220        SASL mechanisms,
221
222    (4) Data confidentiality protection by means of security layers in
223        TLS or SASL mechanisms,
224
225
226
227 Harrison                 Expires August 2005                 [Page 4]
228 \f
229 Internet-Draft       LDAP Authentication Methods        February 2005
230
231    (5) Server resource usage limitation by means of administrative
232        limits configured on the server, and
233
234    (6) Server authentication by means of the TLS protocol or SASL
235        mechanisms.
236
237    LDAP may also be protected by means outside the LDAP protocol, e.g.
238    with IP-level security [RFC2401].
239
240    At the moment, imposition of access controls is done by means
241    outside the scope of LDAP.
242
243    Considering the above requirements, experience has shown that simply
244    allowing implementations to pick and choose among the possible
245    alternatives is not a strategy that leads to interoperability. In
246    the absence of mandates, clients will continue to be written that do
247    not support any security function supported by the server, or worse,
248    they will support only clear text passwords that provide inadequate
249    security for most circumstances.
250
251    It is desirable to allow clients to authenticate using a variety of
252    mechanisms including mechanisms where identities are represented as
253    distinguished names [X.501] [Models] in string form [LDAPDN] or are
254    used in different systems (e.g. user name in string form). Because
255    some authentication mechanisms transmit credentials in plain text
256    form and/or do not provide data security services, it is necessary
257    to ensure secure interoperability by identifying a mandatory-to-
258    implement mechanism for establishing transport-layer security
259    services.
260
261    The set of security mechanisms provided in LDAP and described in
262    this document is intended to meet the security needs for a wide
263    range of deployment scenarios and still provide a high degree of
264    interoperability among various LDAP implementations and deployments.
265    Appendix B contains example deployment scenarios that list the
266    mechanisms that might be used to achieve a reasonable level of
267    security in various circumstances.
268
269 1.1. Relationship to Other Documents
270
271    This document is an integral part of the LDAP Technical
272    Specification [Roadmap]. 
273
274    This document obsoletes RFC 2829.
275
276    Sections 2 and 4 of RFC 2830 are obsoleted by [Protocol].  The
277    remainder of RFC 2830 is obsoleted by this document. 
278
279 1.2. Conventions
280
281
282    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
283    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
284    document are to be interpreted as described in RFC 2119 [RFC2119].
285
286 Harrison                 Expires August 2005                 [Page 5]
287 \f
288 Internet-Draft       LDAP Authentication Methods        February 2005
289
290
291    The term "user" represents any human or application entity which is
292    accessing the directory using a directory client.  A directory
293    client (or client) is also known as a directory user agent (DUA).
294
295    The term "transport connection" refers to the underlying transport
296    services used to carry the protocol exchange, as well as
297    associations established by these services.
298
299    The term "TLS layer" refers to TLS services used in providing
300    security services, as well as associations established by these
301    services.
302
303    The term "SASL layer" refers to SASL services used in providing
304    security services, as well as associations established by these
305    services.
306
307    The term "LDAP message layer" refers to the LDAP Message (PDU)
308    services used in providing directory services, as well as
309    associations established by these services.
310
311    The term "association" refers to the association that exists between
312    the transport connection and its current authorization state. As a
313    shorthand, an association with an authorization state of <state> can
314    be referred to as a "<state> association", e.g. an association with
315    an anonymous authorization state is an anonymous association.
316
317    In general, security terms in this document are used consistently
318    with the definitions provided in [RFC2828]. In addition, several
319    terms and concepts relating to security, authentication, and
320    authorization are presented in Appendix C of this document. While
321    the formal definition of these terms and concepts is outside the
322    scope of this document, an understanding of them is prerequisite to
323    understanding much of the material in this document. Readers who are
324    unfamiliar with security-related concepts are encouraged to review
325    Appendix C before reading the remainder of this document.
326
327 2. Implementation Requirements
328
329    LDAP server implementations MUST support the anonymous
330    authentication mechanism of simple bind (section 6).
331
332    LDAP implementations that support any authentication mechanism other
333    than the anonymous authentication mechanism of simple bind MUST
334    support the DIGEST-MD5 [DIGEST-MD5] mechanism of SASL bind (section
335    10).  DIGEST-MD5 is a reasonably strong authentication mechanism
336    that provides (mandatory-to-implement) data security (data integrity
337    and data confidentiality) services.
338
339    LDAP implementations SHOULD support the simple (DN and password)
340    authentication mechanism of simple bind (section 8).
341    Implementations that support this authentication mechanism MUST be
342    capable of protecting using TLS as established by the StartTLS
343    operation (section 3), SHOULD disallow the use of this
344
345 Harrison                 Expires August 2005                 [Page 6]
346 \f
347 Internet-Draft       LDAP Authentication Methods        February 2005
348
349    authentication mechanism by default when suitable data security
350    services are not in place, and MAY provide other suitable data
351    security services for use with this authentication mechanism.
352
353    Implementations MAY support additional authentication mechanisms.
354    Some of these mechanisms are discussed below.
355
356    LDAP server implementations SHOULD support client assertion of
357    authorization identity via the SASL EXTERNAL mechanism (sections
358    3.2.2 and 9).
359
360    LDAP server implementations SHOULD support the StartTLS operation
361    (section 3), and server implementations that do support the StartTLS
362    operation MUST support the TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
363    ciphersuite.
364
365 3. StartTLS Operation
366
367    The Start Transport Layer Security (StartTLS) operation defined in
368    section 4.14 of [Protocol] provides the ability to establish TLS
369    [TLS] on an LDAP connection.
370
371    The goals of using the TLS [TLS] protocol with LDAP are to ensure
372    data confidentiality and integrity, and to optionally provide for
373    authentication.  TLS expressly provides these capabilities, although
374    the authentication services of TLS are available to LDAP only in
375    combination with the SASL EXTERNAL authentication method (see
376    section 11), and then only if the SASL EXTERNAL implementation
377    chooses to make use of the TLS credentials.
378
379 3.1. Sequencing of the StartTLS Operation
380
381    This section describes the overall procedures clients and servers
382    must follow for TLS establishment. These procedures take into
383    consideration various aspects of the association including discovery
384    of resultant security level and assertion of the client's
385    authorization identity.
386
387 3.1.1. StartTLS Request 
388
389    A client may send the StartTLS extended request at any time after
390    establishing an LDAP connection, except:
391
392       - when TLS is currently established on the connection,
393       - when a multi-stage SASL negotiation is in progress on the
394         connection, or
395       - when it has not yet received responses for all operation
396         requests previously issued on the connection.
397
398    As described in [Protocol] Section 4.14.2.2, a (detected) violation
399    of any of these requirements results in a return of the
400    operationsError resultCode.
401
402
403
404 Harrison                 Expires August 2005                 [Page 7]
405 \f
406 Internet-Draft       LDAP Authentication Methods        February 2005
407
408    Client implementers should ensure that they strictly follow these
409    operation sequencing requirements to prevent interoperability
410    issues. Operational experience has shown that violating these
411    requirements causes interoperability issues because there are race
412    conditions that prevent servers from detecting some violations of
413    these requirements due to server hardware speed, network latencies,
414    etc. 
415
416    There is no general requirement that the client have or have not
417    already performed a Bind operation (section 4) before sending a
418    StartTLS operation request.
419
420 3.1.2. StartTLS Response
421
422    The server will return an extended response with the resultCode of
423    success if it is willing and able to negotiate TLS.  
424
425    It will return a resultCode other than success (as documented in
426    [Protocol] section 4.13.2.2) if it is unwilling or unable to do so.
427    The state of the association is unaffected if a non-success
428    resultCode is returned.
429
430    In the successful case, the client (which has ceased to transfer
431    LDAP requests on the connection) MUST either begin a TLS negotiation
432    or close the connection. The client will send PDUs in the TLS Record
433    Protocol directly over the underlying transport connection to the
434    server during TLS negotiation.
435
436 3.1.3. TLS Version Negotiation
437
438    Negotiating the version of TLS to be used is a part of the TLS
439    Handshake Protocol [TLS]. Please refer to that document for details.
440
441 3.1.4. Client Certificate
442
443    If an LDAP server requests a client to provide its certificate
444    during TLS negotiation and the client does not present a suitable
445    certificate (e.g. one that can be validated), the server may use a
446    local security policy to determine whether to successfully complete
447    TLS negotiation.  
448
449    If a client that has provided a suitable certificate subsequently
450    binds using the SASL EXTERNAL authentication mechanism (section 9),
451    information in the certificate may be used by the server to
452    establish the client's authorization identity.
453
454 3.1.5. Discovery of Resultant Security Level
455
456    After a TLS layer is established on a transport connection, both
457    parties are to individually decide whether or not to continue based
458    on the security level achieved. The procedure for ascertaining the
459    TLS layer's security level is implementation dependent.
460
461
462
463 Harrison                 Expires August 2005                 [Page 8]
464 \f
465 Internet-Draft       LDAP Authentication Methods        February 2005
466
467    If the client or server decides that the security level is not high
468    enough for it to continue, it SHOULD gracefully remove the TLS
469    connection immediately after the TLS negotiation has completed (see
470    [Protocol] section 4.13.3.1 and section 3.2.3 below).  The client
471    may then close the transport connection, attempt to StartTLS again,
472    send an unbind request, or send any other LDAP request.
473
474 3.1.6. Server Identity Check
475
476    The client MUST check its understanding of the server's hostname
477    against the server's identity as presented in the server's
478    Certificate message in order to prevent man-in-the-middle attacks.
479
480    Matching is performed according to these rules:
481
482      - The client MUST use the server name provided by the user (or
483        other trusted entity) as the value to compare against the server
484        name as expressed in the server's certificate. A hostname
485        derived from user input is to be considered provided by the user
486        only if derived in a secure fashion (e.g., DNSSEC).
487
488      - If a subjectAltName extension of type dNSName is present in the
489        certificate, it SHOULD be used as the source of the server's
490        identity.
491
492      - The string values to be compared MUST be prepared according to
493        the rules described in [Matching].
494
495      - The "*" wildcard character is allowed.  If present, it applies
496        only to the left-most name component.
497
498        For example, *.bar.com would match a.bar.com and b.bar.com, but
499        it would not match a.x.bar.com nor would it match bar.com.  If
500        more than one identity of a given type is present in the
501        certificate (e.g. more than one dNSName name), a match with any
502        one of the set is considered acceptable.
503
504    If the hostname does not match the dNSName-based identity in the
505    certificate per the above check, user-oriented clients SHOULD either
506    notify the user (clients may give the user the opportunity to
507    continue with the LDAP session in this case) or close the transport
508    connection and indicate that the server's identity is suspect.
509    Automated clients SHOULD close the connection and then  return
510    and/or log an error indicating that the server's identity is suspect.
511
512    Beyond the server identity checks described in this section, clients
513    SHOULD be prepared to do further checking to ensure that the server
514    is authorized to provide the service it is requested to provide. The
515    client may need to make use of local policy information in making
516    this determination.
517
518 3.1.7. Refresh of Server Capabilities Information
519
520
521
522 Harrison                 Expires August 2005                 [Page 9]
523 \f
524 Internet-Draft       LDAP Authentication Methods        February 2005
525
526    Upon installing a TLS layer, the client SHOULD discard or refresh
527    all information about the server it obtained prior to the initiation
528    of the TLS negotiation and not obtained through secure mechanisms.
529    This protects against man-in-the-middle attacks that may have
530    altered any server capabilities information retrieved prior to TLS
531    layer installation. 
532
533    The server may advertise different capabilities after installing a
534    TLS layer. In particular, the value of supportedSASLMechanisms may
535    be different after a TLS layer has been installed (specifically, the
536    EXTERNAL and PLAIN [PLAIN] mechanisms are likely to be listed only
537    after a TLS layer has been installed).
538
539 3.2. Effects of TLS on a Client's Authorization Identity
540
541    The decision to keep or invalidate the established state of the
542    association (section 4.3) after TLS layer installation or removal is
543    a matter of local server policy. 
544
545 3.3. TLS Ciphersuites
546
547    Several issues should be considered when selecting TLS ciphersuites
548    that are appropriate for use in a given circumstance. These issues
549    include the following:
550
551      - The ciphersuite's ability to provide adequate confidentiality
552        protection for passwords and other data sent over the transport
553        connection. Client and server implementers should recognize that
554        some TLS ciphersuites provide no confidentiality protection
555        while other ciphersuites that do provide confidentiality
556        protection may be vulnerable to being cracked using brute force
557        methods, especially in light of ever-increasing CPU speeds that
558        reduce the time needed to successfully mount such attacks.
559
560      - Client and server implementers should carefully consider the
561        value of the password or data being protected versus the level
562        of confidentially protection provided by the ciphersuite to
563        ensure that the level of protection afforded by the ciphersuite
564        is appropriate.
565
566      - The ciphersuite's vulnerability (or lack thereof) to man-in-the-
567        middle attacks. Ciphersuites vulnerable to man-in-the-middle
568        attacks SHOULD NOT be used to protect passwords or sensitive
569        data, unless the network configuration is such that the danger
570        of a man-in-the-middle attack is tolerable.
571
572 3.3.1. TLS Ciphersuites Recommendations
573
574    [[TODO: Kurt will have someone from security to look at this and
575    will propose how to handle discussion of specific TLS ciphersuites
576    in this draft.]]
577
578    As of the writing of this document, the following recommendations
579    regarding TLS ciphersuites are applicable. Because circumstances are
580
581 Harrison                 Expires August 2005                [Page 10]
582 \f
583 Internet-Draft       LDAP Authentication Methods        February 2005
584
585    constantly changing, this list must not be considered exhaustive,
586    but is hoped that it will serve as a useful starting point for
587    implementers. 
588
589    The following ciphersuites defined in [TLS] MUST NOT be used for
590    confidentiality protection of passwords or data:
591
592          TLS_NULL_WITH_NULL_NULL
593          TLS_RSA_WITH_NULL_MD5
594          TLS_RSA_WITH_NULL_SHA
595
596    The following ciphersuites defined in [TLS] can be cracked easily
597    (less than a day of CPU time on a standard CPU in 2000) and are NOT
598    RECOMMENDED for use in confidentiality protection of passwords or
599    data:
600
601          TLS_RSA_EXPORT_WITH_RC4_40_MD5
602          TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5
603          TLS_RSA_EXPORT_WITH_DES40_CBC_SHA
604          TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA
605          TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA
606          TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
607          TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
608          TLS_DH_anon_EXPORT_WITH_RC4_40_MD5
609          TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA
610
611    The following ciphersuites are vulnerable to man-in-the-middle
612    attacks:
613
614          TLS_DH_anon_EXPORT_WITH_RC4_40_MD5
615          TLS_DH_anon_WITH_RC4_128_MD5
616          TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA
617          TLS_DH_anon_WITH_DES_CBC_SHA
618          TLS_DH_anon_WITH_3DES_EDE_CBC_SHA
619
620 4. Associations
621
622    Every LDAP connection has an associated authorization state referred
623    to as the "association". The Bind operation defined in section 4.2
624    of [Protocol] and discussed further in section 5 below allows
625    information to be exchanged between the client and server to change
626    the authorization state of the association.
627
628 4.1. Anonymous Association on Unbound Connections
629
630    Prior to the successful completion of a Bind operation and during
631    any subsequent authentication exchange, the association has an
632    anonymous authorization state. Among other things this implies that
633    the client need not send a Bind Request in the first PDU of the LDAP
634    message layer. The client may send any operation request prior to
635    binding, and the server MUST treat it as if it had been performed
636    after an anonymous bind operation (section 6). This association
637    state is sometimes referred to as an implied anonymous bind.
638
639
640 Harrison                 Expires August 2005                [Page 11]
641 \f
642 Internet-Draft       LDAP Authentication Methods        February 2005
643
644 4.2. Anonymous Association After Failed Bind
645
646    Upon receipt of a Bind request, the association is moved to an
647    anonymous state and only upon successful completion of the
648    authentication exchange (and the Bind operation) is the association
649    moved to an authenticated state. Thus, a failed Bind operation
650    produces an anonymous association.
651
652 4.3. Invalidated Associations
653
654    The server may move the association to an invalidated state at any
655    time, e.g. if an established security layer between the client and
656    server has unexpectedly failed or been compromised.  While the LDAP
657    session has an invalidated association, the server may reject any
658    operation request other than Bind, Unbind, and StartTLS by
659    responding with a resultCode of strongerAuthRequired to indicate
660    that the server requires stronger authentication before it will
661    attempt to perform the requested operation. In practice, this means
662    that the client needs to bind to(re)establish a suitably strong
663    authorization state on the association before the server will
664    attempt to perform the requested operation.
665
666 5. Bind Operation
667
668    The Bind operation ([Protocol] section 4.2) allows authentication
669    information to be exchanged between the client and server to
670    establish a new authorization state on the association. 
671
672    The Bind request typically specifies the desired authentication
673    identity.  Some Bind mechanisms also allow the client to specify the
674    authorization identity.  If the authorization identity is not
675    specified, the server derives it from the authentication identity in
676    an implementation-specific manner.
677
678    If the authorization identity is specified the server MUST verify
679    that the client's authentication identity is permitted to assume
680    (e.g. proxy for) the asserted authorization identity. The server
681    MUST reject the Bind operation with an invalidCredentials resultCode
682    in the Bind response if the client is not so authorized.
683
684 5.1. Simple Authentication Choice
685
686    The simple authentication choice of the Bind Operation provides
687    three authentication mechanisms:
688
689     1. An anonymous authentication mechanism (section 6),
690
691     2. An unauthenticated authentication mechanism (section 7), and
692
693     3. A simple authentication mechanism using credentials consisting
694        of a name (in the form of an LDAP distinguished name [LDAPDN])
695        and a password (section 8).
696
697 5.2. SASL Authentication Choice
698
699 Harrison                 Expires August 2005                [Page 12]
700 \f
701 Internet-Draft       LDAP Authentication Methods        February 2005
702
703
704    The sasl authentication choice of the Bind Operation provides
705    facilities for using any SASL mechanism (sections 9-11) including
706    authentication mechanisms and other services (e.g. data security
707    services).
708
709 6. Anonymous Authentication Mechanism of Simple Bind
710
711    An LDAP client may use the anonymous authentication mechanism of the
712    simple Bind choice to explicitly establish an anonymous association
713    by sending a Bind request with a name value of zero length and
714    specifying the simple authentication choice containing a password
715    value of zero length.
716
717 7. Unauthenticated Authentication Mechanism of Simple Bind
718
719    An LDAP client may use the unauthenticated authentication mechanism
720    of the simple Bind choice to establish an anonymous association by
721    sending a Bind request with a name value, a distinguished name in
722    LDAP string form [LDAPDN] of non-zero length, and specifying the the
723    simple authentication choice containing a password value of zero
724    length.
725
726    Unauthenticated binds can have significant security issues (see
727    section 12.3). Servers SHOULD by default reject unauthenticated bind
728    requests with a resultCode of invalidCredentials, and clients may
729    need to actively detect situations where they would unintentionally
730    make an unauthenticated bind request.
731
732 8. Simple Authentication Mechanism of Simple Bind 
733
734    An LDAP client may use the simple authentication mechanism of the
735    simple Bind choice to establish an authenticated association by
736    sending a Bind request with a name value, a distinguished name in
737    LDAP string form [LDAPDN] of non-zero length, and specifying the
738    simple authentication choice containing an OCTET STRING password
739    value of non-zero length.
740
741    Servers that map the DN sent in the bind request to a directory
742    entry with an associated set of one or more passwords used with this
743    mechanism will compare the presented password to that set of
744    passwords. The presented password is considered valid if it matches
745    any member of this set. 
746
747    A resultCode of invalidDNSyntax indicates that the DN sent in the
748    name value is syntactically invalid. A resultCode of
749    invalidCredentials indicates that the DN is syntactically correct
750    but not valid for purposes of authentication, or the password is not
751    valid for the DN, or the server otherwise considers the credentials
752    to be invalidA resultCode of success indicates that the credentials
753    are valid and the server is willing to provide service to the entity
754    these credentials identify.
755
756
757
758 Harrison                 Expires August 2005                [Page 13]
759 \f
760 Internet-Draft       LDAP Authentication Methods        February 2005
761
762    Server behavior is undefined for bind requests specifying the simple
763    authentication mechanism with a zero-length name value and a
764    password value of non-zero length.
765
766    The simple authentication mechanism of simple bind is not suitable
767    for authentication in environments where there is no network or
768    transport layer confidentiality.x
769
770 9. SASL Protocol Profile
771
772    LDAP allows authentication via any SASL mechanism [SASL]. As LDAP
773    includes native anonymous and simple (plain text) authentication
774    methods, the ANONYMOUS [ANONYMOUS] and PLAIN [PLAIN] SASL mechanisms
775    are typically not used with LDAP.
776
777    Each protocol that utilizes SASL services is required to supply
778    certain information profiling the way they are exposed through the
779    protocol ([SASL] section 5). This section explains how each of these
780    profiling requirements are met by LDAP.
781
782 9.1. SASL Service Name for LDAP
783
784    The SASL service name for LDAP is "ldap", which has been registered
785    with the IANA as a SASL service name.
786
787 9.2. SASL Authentication Initiation and Protocol Exchange
788
789    SASL authentication is initiated via an LDAP Bind request
790    ([Protocol] section 4.2) with the following parameters:
791
792       - The version is 3.
793       - The AuthenticationChoice is sasl. 
794       - The mechanism element of the SaslCredentials sequence contains
795         the value of the desired SASL mechanism. 
796       - The optional credentials field of the SaslCredentials sequence
797         may be used to provide an initial client response for
798         mechanisms that are defined to have the client send data first
799         (see [SASL] sections 5 and 5.1).
800
801    In general, a SASL authentication protocol exchange consists of a
802    series of server challenges and client responses, the contents of
803    which are specific to and defined by the SASL mechanism. Thus for
804    some SASL authentication mechanisms, it may be necessary for the
805    client to respond to one or more server challenges by invoking the
806    Bind operation multiple times. A challenge is indicated by the
807    server sending a BindResponse PDU with the resultCode set to
808    saslBindInProgress. This indicates that the server requires the
809    client to send a new BindRequest PDU with the same sasl mechanism to
810    continue the authentication process.
811
812    To LDAP message layer, these challenges and responses are opaque
813    binary tokens of arbitrary length. LDAP servers use the
814    serverSaslCreds field, an OCTET STRING, in a BindResponse PDU
815    message to transmit each challenge. LDAP clients use the credentials
816
817 Harrison                 Expires August 2005                [Page 14]
818 \f
819 Internet-Draft       LDAP Authentication Methods        February 2005
820
821    field, an OCTET STRING, in the SaslCredentials sequence of a
822    BindRequest PDU message to transmit each response. Note that unlike
823    some Internet protocols where SASL is used, LDAP is not text based,
824    thus no Base64 transformations are performed on these challenge and
825    response values.
826
827    Clients sending a BindRequest with the sasl choice selected SHOULD
828    send an zero-length value in the name field. Servers receiving a
829    bind request with the sasl choice selected SHALL ignore any value in
830    the name field.
831
832    A client may abort a SASL bind negotiation by sending a BindRequest
833    with a different value in the mechanism field of SaslCredentials, or
834    an AuthenticationChoice other than sasl. 
835        
836    If the client sends a BindRequest with the sasl mechanism field as
837    an empty string, the server MUST return a BindResponse with a
838    resultCode of authMethodNotSupported. This will allow the client to
839    abort a negotiation if it wishes to try again with the same SASL
840    mechanism.
841
842
843    The server indicates completion of the SASL challenge-response
844    exchange by responding with a BindResponse in which the resultCode
845    is not saslBindInProgress (either success or another error
846    indication).
847
848    The serverSaslCreds field in the BindResponse can be used to include
849    an optional challenge with a success notification for mechanisms
850    which are defined to have the server send additional data along with
851    the indication of successful completion. If a server does not intend
852    to send a challenge value in a BindResponse message, the server
853    SHALL omit the serverSaslCreds field (rather than including the
854    field with a zero-length value).
855
856 9.3. Octet Where Negotiated Security Mechanisms Take Effect
857
858    SASL layers take effect following the transmission by the server and
859    reception by the client of the final successful BindResponse in the
860    exchange.
861
862    Once a SASL layer providing data integrity or confidentiality
863    services takes effect, the layer remains in effect until a new layer
864    is installed (i.e. at the first octet following the final
865    BindResponse of the bind operation that caused the new layer to take
866    effect).  Thus, an established SASL layer is not affected by a
867    failed or non-SASL Bind.
868
869 9.4. Determination of Supported SASL Mechanisms
870
871    Clients may determine the SASL mechanisms a server supports by
872    reading the supportedSASLMechanisms attribute from the root DSE
873    (DSA-Specific Entry) ([Models] section 5.1).  The values of this
874    attribute, if any, list the mechanisms the server supports in the
875
876 Harrison                 Expires August 2005                [Page 15]
877 \f
878 Internet-Draft       LDAP Authentication Methods        February 2005
879
880    current LDAP session state. LDAP servers SHOULD allow a client with
881    an anonymous association to retrieve the supportedSASLMechanisms
882    attribute of the root DSE.
883
884    Because SASL mechanisms provide critical security functions, clients
885    and servers should be configurable to specify what mechanisms are
886    acceptable and allow only those mechanisms to be used. Both clients
887    and servers must confirm that the negotiated security level meets
888    their requirements before proceeding to use the connection.
889
890 9.5. Rules for Using SASL Layers
891
892    If a SASL layer is installed, the client SHOULD discard information
893    about the server it obtained prior to the initiation of the SASL
894    negotiation and not obtained through secure mechanisms. 
895
896    If a lower level security layer (such as TLS) is installed, any SASL
897    layer SHALL be layered on top of such security layers regardless of
898    the order of their negotiation. In all other respects, the SASL
899    layer and other security layers act independently, e.g. if both a
900    TLS layer and a SASL layer are in effect then removing the SASL
901    layer does not affect the continuing service of the TLS layer and
902    vice versa.
903
904 9.6 Support for Multiple Authentications
905
906    LDAP supports multiple SASL authentications as defined in [SASL]
907    section 6.3.
908
909 9.7. SASL Authorization Identities
910
911    Some SASL mechanisms allow clients to request a desired
912    authorization identity for the association. The decision to allow or
913    disallow the current authentication identity to have access to the
914    requested authorization identity is a matter of local policy ([SASL]
915    section 4.2). The authorization identity is a string of UTF-8
916    [RFC3629] encoded [Unicode] characters corresponding to the
917    following ABNF [RFC2234] grammar:
918
919    authzId ::= dnAuthzId / uAuthzId
920
921    DNCOLON  ::= %x64 %x6e %x3a ; "dn:"
922    UCOLON ::= %x75 %x3a ; "u:"
923
924    ; distinguished-name-based authz id.
925    dnAuthzId ::= DNCOLON distinguishedName
926
927    ; unspecified authorization id, UTF-8 encoded.
928    uAuthzId ::= UCOLON userid
929    userid ::= *UTF8    ; syntax unspecified
930
931    where the <distinguishedName> production is defined in section 3 of
932    [LDAPDN] and the <UTF8> production is defined in section 1.3 of
933    [Models].
934
935 Harrison                 Expires August 2005                [Page 16]
936 \f
937 Internet-Draft       LDAP Authentication Methods        February 2005
938
939
940    In order to support additional specific authorization identity
941    forms, future updates to this specification may add new choices
942    supporting other forms of the authzId production. 
943
944    The dnAuthzId choice is used to assert authorization identities in
945    the form of a distinguished name to be matched in accordance with
946    the distinguishedNameMatch matching rule [Syntaxes]. There is no
947    requirement that the asserted distinguishedName value be that of an
948    entry in the directory.
949
950    The uAuthzId choice allows clients to assert an authorization
951    identity that is not in distinguished name form. The format of
952    userid is defined as only a sequence of UTF-8 [RFC3629] encoded
953    [Unicode] characters, and any further interpretation is a local
954    matter.  For example, the userid could identify a user of a specific
955    directory service, be a login name, or be an email address. A
956    uAuthzId SHOULD NOT be assumed to be globally unique. To compare
957    uAuthzID values, each uAuthzID value MUST be prepared using
958    [SASLPrep] and then the two values are compared octet-wise.
959
960 10. SASL DIGEST-MD5 Authentication Mechanism
961
962    The SASL DIGEST-MD5 mechanism [DIGEST-MD5] provides client
963    authentication with protection against passive eavesdropping attacks
964    but does not provide protection against man-in-the-middle attacks.
965    DIGEST-MD5 also provides data integrity and data confidentiality
966    capabilities.
967
968    Support for subsequent authentication ([DIGEST-MD5] section 2.2) is
969    OPTIONAL in clients and servers.
970
971    Implementers must take care to ensure that they maintain the
972    semantics of the DIGEST-MD5 specification even when handling data
973    that has different semantics in the LDAP protocol.
974    For example, the SASL DIGEST-MD5 authentication mechanism utilizes
975    realm and username values ([DIGEST-MD5] section 2.1) which are
976    syntactically simple strings and semantically simple realm and
977    username values. These values are not LDAP DNs, and there is no
978    requirement that they be represented or treated as such. Username
979    and realm values that look like LDAP DNs in form, e.g. <cn=bob,
980    dc=example,dc=com>, are syntactically allowed, however DIGEST-MD5
981    treats them as simple strings for comparison purposes. To illustrate
982    further, the two DNs <cn=Bob,dc=example,dc=com> (upper case "B") and
983    <cn=bob,dc=example,dc=com> (lower case "b") are equivalent when
984    being compared semantically as LDAP DNs because the cn attribute is
985    defined to be case insensitive, however the two values are not
986    equivalent if they represent username values in DIGEST-MD5 because
987    [SASLPrep] semantics are used by DIGEST-MD5.
988
989 11. SASL EXTERNAL Authentication Mechanism
990
991    A client can use the SASL EXTERNAL [SASL] mechanism to request the
992    LDAP server to authenticate and establish a resulting authorization
993
994 Harrison                 Expires August 2005                [Page 17]
995 \f
996 Internet-Draft       LDAP Authentication Methods        February 2005
997
998    identity using security credentials exchanged by a lower security
999    layer (such as by TLS authentication or IP-level security
1000    [RFC2401]).  
1001
1002    The authorization identity used to determine the resulting
1003    association is derived from the security credentials in an
1004    implementation-specific manner.  If the client's authentication
1005    credentials have not been established at a lower security layer, the
1006    SASL EXTERNAL bind MUST fail with a resultCode of
1007    inappropriateAuthentication.  Although this situation has the effect
1008    of leaving the association in an anonymous state (section 5), the
1009    state of any installed security layer is unaffected.
1010
1011    A client may either request that its authorization identity be
1012    automatically derived from its authentication credentials exchanged
1013    at a lower security layer or it may explicitly provide an
1014    authorization identity desired for the association.  The former is
1015    known as an implicit assertion, and the latter as an explicit
1016    assertion.
1017
1018 11.1. Implicit Assertion
1019
1020    An implicit authorization identity assertion is performed by
1021    invoking a Bind request of the SASL form using the EXTERNAL
1022    mechanism name that does not include the optional credentials field
1023    (found within the SaslCredentials sequence in the BindRequest). The
1024    server will derive the client's authorization identity from the
1025    authentication identity supplied by a security layer (e.g., a public
1026    key certificate used during TLS layer installation) according to
1027    local policy. The underlying mechanics of how this is accomplished
1028    are implementation specific.
1029
1030 11.2. Explicit Assertion
1031
1032    An explicit authorization identity assertion is performed by
1033    invoking a Bind request of the SASL form using the EXTERNAL
1034    mechanism name that includes the credentials field (found within the
1035    SaslCredentials sequence in the BindRequest). The value of the
1036    credentials field, an octet string, is the asserted authorization
1037    identity and MUST be constructed as documented in section 9.7.
1038
1039 12. Security Considerations
1040
1041    Security issues are discussed throughout this document. The
1042    unsurprising conclusion is that security is an integral and
1043    necessary part of LDAP.  This section discusses a number of LDAP-
1044    related security considerations.
1045
1046 12.1. General LDAP Security Considerations
1047
1048    LDAP itself provides no security or protection from accessing or
1049    updating the directory by other means than through the LDAP
1050    protocol, e.g. from inspection by database administrators. Access
1051
1052
1053 Harrison                 Expires August 2005                [Page 18]
1054 \f
1055 Internet-Draft       LDAP Authentication Methods        February 2005
1056
1057    control SHOULD always be applied when reading sensitive information
1058    or updating directory information.
1059
1060    Servers can minimize denial of service attacks by providing the
1061    ability to configure and enforce administrative limits on
1062    operations, timing out idle connections and returning the
1063    unwillingToPerform resultCode rather than performing computationally
1064    expensive operations requested by unauthorized clients.
1065
1066    A connection on which the client has not established connection
1067    integrity and privacy services (e.g via StartTLS, IPSec or a
1068    suitable SASL mechanism) is subject to man-in-the-middle attacks to
1069    view and modify information in transit. Client and server
1070    implementors SHOULD take measures to protect confidential data in
1071    the LDAP session from these attacks by using data protection
1072    services as discussed in this document.  Clients and servers should
1073    provide the ability to be configured to require these protections.
1074    A resultCode of confidentialityRequired indicates that the server
1075    requires establishment of (stronger) data confidentiality protection
1076    in order to perform the requested operation.
1077
1078 12.1.1. Password-related Security Considerations
1079
1080    LDAP allows multi-valued password attributes.  In systems where
1081    entries are expected to have one and only one password,
1082    administrative controls should be provided to enforce this behavior.
1083
1084    The use of clear text passwords and other unprotected authentication
1085    credentials is strongly discouraged over open networks when the
1086    underlying transport service cannot guarantee confidentiality.  LDAP
1087    implementations SHOULD NOT support authentication methods using
1088    cleartext passwords and other unprotected authentication credentials
1089    unless the data on the connection is protected using TLS or other
1090    data confidentiality and data integrity protection.
1091
1092    The transmission of passwords in the clear--typically for
1093    authentication or modification--poses a significant security risk.
1094    This risk can be avoided by using SASL authentication [SASL]
1095    mechanisms that do not transmit passwords in the clear or by
1096    negotiating transport or session layer data confidentiality services
1097    before transmitting password values.
1098
1099    To mitigate the security risks associated with the transfer of
1100    passwords, a server implementation that supports any password-based
1101    authentication mechanism that transmits passwords in the clear MUST
1102    support a policy mechanism that at the time of authentication or
1103    password modification, requires:
1104
1105         A TLS layer has been successfully installed.
1106
1107       OR
1108
1109         Some other data confidentiality mechanism that protects the
1110         password value from snooping has been provided.
1111
1112 Harrison                 Expires August 2005                [Page 19]
1113 \f
1114 Internet-Draft       LDAP Authentication Methods        February 2005
1115
1116
1117       OR
1118
1119         The server returns a resultCode of confidentialityRequired for
1120         the operation (i.e. simple bind with password value, SASL bind
1121         transmitting a password value in the clear, add or modify
1122         including a userPassword value, etc.), even if the password
1123         value is correct.
1124
1125 12.2. StartTLS Security Considerations
1126
1127    All security gained via use of the StartTLS operation is gained by
1128    the use of TLS itself. The StartTLS operation, on its own, does not
1129    provide any additional security.
1130
1131    The level of security provided though the use of TLS depends
1132    directly on both the quality of the TLS implementation used and the
1133    style of usage of that implementation. Additionally, a man-in-the-
1134    middle attacker can remove the StartTLS extended operation from the
1135    supportedExtension attribute of the root DSE. Both parties SHOULD
1136    independently ascertain and consent to the security level achieved
1137    once TLS is established and before beginning use of the TLS
1138    connection. For example, the security level of the TLS layer might
1139    have been negotiated down to plaintext. 
1140
1141    Clients SHOULD by default either warn the user when the security
1142    level achieved does not provide an acceptable level of data
1143    confidentiality and/or data integrity protection, or be configured
1144    to refuse to proceed without an acceptable level of security.
1145
1146    Server implementors SHOULD allow server administrators to elect
1147    whether and when data confidentiality and integrity are required, as
1148    well as elect whether authentication of the client during the TLS
1149    handshake is required.
1150
1151    Implementers should be aware of and understand TLS security
1152    considerations as discussed in the TLS specification [TLS].
1153
1154 12.3. Unauthenticated Mechanism Security Considerations
1155
1156    Operational experience shows that clients can (and frequently do)
1157    misuse the unauthenticated authentication mechanism of simple bind
1158    (see section 7).  For example, a client program might make a
1159    decision to grant access to non-directory information on the basis
1160    of completing a successful bind operation. LDAP server
1161    implementations may return a success response to an unauthenticated
1162    bind request thus leaving the client with the impression that the
1163    server has successfully authenticated the identity represented by
1164    the user name when in reality, an anonymous association has been
1165    established. Clients that use the results from a simple bind
1166    operation to make authorization decisions should actively detect
1167    unauthenticated bind requests (by verifying that the supplied
1168    password is not empty) and react appropriately.
1169
1170
1171 Harrison                 Expires August 2005                [Page 20]
1172 \f
1173 Internet-Draft       LDAP Authentication Methods        February 2005
1174
1175 12.4. Simple Mechanism Security Considerations
1176
1177    The simple authentication mechanism of simple bind discloses the
1178    password to the server, which is an inherent security risk. There
1179    are other mechanisms such as DIGEST-MD5 that do not disclose
1180    password to server.
1181
1182 12.5. SASL DIGEST-MD5 Mechanism Security Considerations
1183
1184    The SASL DIGEST-MD5 mechanism is prone to the qop substitution
1185    attack, as discussed in 3.6 of [DIGEST-MD5].  The qop substitution
1186    attack can be mitigated (as discussed in 3.6 of [DIGEST-MD5]).
1187
1188    The SASL DIGEST-MD5 mechanism [DIGEST-MD5] provides client
1189    authentication with protection against passive eavesdropping attacks
1190    but does not provide protection against man-in-the-middle attacks.  
1191
1192    Implementers should be aware of and understand DIGEST-MD5 security
1193    considerations as discussed in the DIGEST-MD5 specification [DIGEST-
1194    MD5].
1195
1196 12.6. Related Security Considerations
1197
1198    Additional security considerations relating to the various
1199    authentication methods and mechanisms discussed in this document
1200    apply and can be found in [SASL], [SASLPrep], [StringPrep] and
1201    [RFC3629].
1202
1203 13. IANA Considerations
1204
1205    The following IANA considerations apply to this document:
1206
1207    It is requested that the IANA update the LDAP Protocol Mechanism
1208    registry to indicate that this document and [Protocol] provide the
1209    definitive technical specification for the StartTLS
1210    (1.3.6.1.4.1.1466.20037) extended operation. 
1211
1212    [[TODO: add any missing IANA Considerations.]]
1213
1214 Acknowledgments
1215
1216    This document combines information originally contained in RFC 2829
1217    and RFC 2830. The editor acknowledges the work of Harald Tveit
1218    Alvestrand, Jeff Hodges, Tim Howes, Steve Kille, RL "Bob" Morgan ,
1219    and Mark Wahl, each of whom authored one or more of these documents.
1220
1221    This document is based upon input of the IETF LDAP Revision working
1222    group. The contributions and suggestions made by its members in
1223    shaping the contents and technical accuracy of this document is
1224    greatly appreciated.
1225
1226 Normative References
1227
1228
1229
1230 Harrison                 Expires August 2005                [Page 21]
1231 \f
1232 Internet-Draft       LDAP Authentication Methods        February 2005
1233
1234    [[Note to the RFC Editor: please replace the citation tags used in
1235    referencing Internet-Drafts with tags of the form RFCnnnn.]]
1236
1237    [RFC2234]    Crocker, D., Ed. and P. Overell, "Augmented BNF for
1238                 Syntax Specifications: ABNF", RFC 2234, November 1997.
1239
1240    [DIGEST-MD5] Leach, P. C. Newman, and A. Melnikov, "Using Digest
1241                 Authentication as a SASL Mechanism", draft-ietf-sasl-
1242                 rfc2831bis-xx.txt, a work in progress. 
1243
1244    [RFC2119]    Bradner, S., "Key Words for use in RFCs to Indicate
1245                 Requirement Levels", BCP 14, RFC 2119, March 1997.
1246
1247    [LDAPDN]     Zeilenga, Kurt D. (editor), "LDAP: String
1248                 Representation of Distinguished Names", draft-ietf-
1249                 ldapbis-dn-xx.txt, a work in progress.
1250
1251    [Matching]   Hoffman, Paul and Steve Hanna, "Matching Text Strings
1252                 in PKIX Certificates", draft-hoffman-pkix-stringmatch-
1253                 xx.txt, a work in progress.
1254
1255    [Models]     Zeilenga, Kurt D. (editor), "LDAP: Directory
1256                 Information Models", draft-ietf-ldapbis-models-xx.txt,
1257                 a work in progress.
1258
1259    [Protocol]   Sermersheim, J., "LDAP: The Protocol", draft-ietf-
1260                 ldapbis-protocol-xx.txt, a work in progress.
1261
1262    [Roadmap]    K. Zeilenga, "LDAP: Technical Specification Road Map",
1263                 draft-ietf-ldapbis-roadmap-xx.txt, a work in progress.
1264
1265    [SASL]       Melnikov, A. (editor), "Simple Authentication and
1266                 Security Layer (SASL)", draft-ietf-sasl-rfc2222bis-
1267                 xx.txt, a work in progress.
1268
1269    [SASLPrep]   Zeilenga, K., "Stringprep profile for user names and
1270                 passwords", draft-ietf-sasl-saslprep-xx.txt, (a work in
1271                 progress).
1272
1273    [StringPrep] M. Blanchet, "Preparation of Internationalized Strings
1274                 ('stringprep')", draft-hoffman-rfc3454bis-xx.txt, a
1275                 work in progress. 
1276
1277    [Syntaxes]   Legg, S. (editor), "LDAP: Syntaxes and Matching Rules",
1278                 draft-ietf-ldapbis-syntaxes-xx.txt, a work in progress.
1279
1280    [TLS]        Dierks, T. and C. Allen. "The TLS Protocol Version
1281                 1.1", draft-ietf-tls-rfc2246-bis-xx.txt, a work in
1282                 progress.
1283
1284    [RFC3629]    Yergeau, F., "UTF-8, a transformation format of ISO
1285                 10646", RFC 3629, STD 63, November 2003.
1286
1287
1288
1289 Harrison                 Expires August 2005                [Page 22]
1290 \f
1291 Internet-Draft       LDAP Authentication Methods        February 2005
1292
1293    [Unicode]    The Unicode Consortium, "The Unicode Standard, Version
1294                 3.2.0" is defined by "The Unicode Standard, Version
1295                 3.0" (Reading, MA, Addison-Wesley, 2000. ISBN 0-201-
1296                 61633-5), as amended by the "Unicode Standard Annex
1297                 #27: Unicode 3.1"
1298                 (http://www.unicode.org/reports/tr27/) and by the
1299                 "Unicode Standard Annex #28: Unicode 3.2"
1300                 (http://www.unicode.org/reports/tr28/).
1301
1302 Informative References
1303
1304    [ANONYMOUS]  Zeilenga, K.,"Anonymous SASL Mechanism", draft-
1305                 zeilenga-sasl-anon-xx.txt, a work in progress.
1306
1307    [RFC2828]    Shirey, R., "Internet Security Glossary", RFC 2828, May
1308                 2000.
1309
1310    [PLAIN]      Zeilenga, K.,"Plain SASL Mechanism", draft-zeilenga-
1311                 sasl-plain-xx.txt, a work in progress.
1312
1313    [RFC2401]    Kent, S. and R. Atkinson, "Security Architecture for
1314                 the Internet Protocol", RFC 2401, November 1998.
1315
1316 Author's Address
1317
1318    Roger Harrison
1319    Novell, Inc.
1320    1800 S. Novell Place
1321    Provo, UT 84606
1322    USA
1323    +1 801 861 2642
1324    roger_harrison@novell.com
1325
1326 Appendix A. Association State Transition Tables
1327
1328    This section provides a state transition table to represent a state
1329    diagram for the various authentication states through which an
1330    association may pass during the course of its existence and the
1331    actions that cause these changes in state.  
1332
1333    This section is based entirely on information found in this document
1334    and other documents that are part of the LDAP Technical
1335    Specification [Roadmap]. As such, it is strictly informational in
1336    nature.
1337
1338 A.1. Association States
1339
1340    The following table lists the valid association states and provides
1341    a description of each state. The ID for each state is used in the
1342    state transition table in section A.3.
1343
1344    ID Association State Description
1345    -- --------------------------------------------------------------
1346
1347
1348 Harrison                 Expires August 2005                [Page 23]
1349 \f
1350 Internet-Draft       LDAP Authentication Methods        February 2005
1351
1352    S1 Anonymous
1353           no Authentication ID is associated with the LDAP connection
1354           no Authorization ID is in force
1355    S2 Authenticated
1356           Authentication ID = I
1357           Authorization ID = X
1358    S3 Invalidated
1359
1360 A.2. Actions that Affect Association State
1361
1362    The following table lists the actions that can affect the
1363    authentication and authorization state of an association. The ID for
1364    each action is used in the state transition table in section A.3.
1365
1366    ID  Action
1367    --  --------------------------------------------------------------
1368    A1  Client bind request fails
1369    A2  Client successfully performs anonymous simple bind or
1370         unauthenticated simple bind
1371    A3  Client successfully binds producing an authentication ID of I.
1372         Authentication ID I maps to authorization ID X. Depending on
1373         the bind mechanism and associated parameters authorization ID X
1374         was either derived from authentication ID I or was explicitly
1375         requested as part of the bind operation.
1376    A4  Client StartTLS request fails
1377    A5  Client StartTLS request succeeds
1378    A6  Client or Server: graceful TLS layer removal 
1379    A7  Server decides to invalidate current association state
1380
1381 A.3. Association State Transition Table
1382
1383    The Association table below lists the the actions that could affect
1384    the authorization state of an association and the resulting state of
1385    an association after a given action occurs.
1386
1387    S1, the initial state for the state machine described in this table,
1388    is the association state when an LDAP connection is initially
1389    established.
1390
1391                         Next State
1392         Action                                     Comment
1393    ----------------  ---------------  -------------------------------
1394    A1                       S1        Section 4
1395    A2                       S1        Sections 6 and 7
1396    A3                       S2
1397    A4                   no change     [Protocol] section 4.14.2.2
1398    A5                no change or S3* [Protocol] section 4.14.2.1
1399    A6                no change or S3* [Protocol] section 4.14.3.1
1400    A7                       S3
1401
1402      * The server may invalidate the association after installing or
1403        removing a TLS layer (section 3.2).
1404
1405
1406
1407 Harrison                 Expires August 2005                [Page 24]
1408 \f
1409 Internet-Draft       LDAP Authentication Methods        February 2005
1410
1411 Appendix B. Authentication and Authorization Concepts
1412
1413    This appendix defines basic terms, concepts, and interrelationships
1414    regarding authentication, authorization, credentials, and identity.
1415    These concepts are used in describing how various security
1416    approaches are utilized in client authentication and authorization.
1417
1418 B.1. Access Control Policy
1419
1420    An access control policy is a set of rules defining the protection
1421    of resources, generally in terms of the capabilities of persons or
1422    other entities accessing those resources. Security objects and
1423    mechanisms, such as those described here, enable the expression of
1424    access control policies and their enforcement.
1425
1426 B.2. Access Control Factors
1427
1428    A request, when it is being processed by a server, may be associated
1429    with a wide variety of security-related factors (section 4.2 of
1430    [Protocol]). The server uses these factors to determine whether and
1431    how to process the request. These are called access control factors
1432    (ACFs). They might include source IP address, encryption strength,
1433    the type of operation being requested, time of day, etc. Some
1434    factors may be specific to the request itself, others may be
1435    associated with the connection via which the request is transmitted,
1436    others (e.g. time of day) may be "environmental".
1437
1438    Access control policies are expressed in terms of access control
1439    factors. E.g., a request having ACFs i,j,k can perform operation Y
1440    on resource Z. The set of ACFs that a server makes available for
1441    such expressions is implementation-specific.
1442
1443 B.3. Authentication, Credentials, Identity
1444
1445    Authentication credentials are the evidence supplied by one party to
1446    another, asserting the identity of the supplying party (e.g. a user)
1447    who is attempting to establish a new association state with the
1448    other party (typically a server). Authentication is the process of
1449    generating, transmitting, and verifying these credentials and thus
1450    the identity they assert. An authentication identity is the name
1451    presented in a credential.
1452
1453    There are many forms of authentication credentials -- the form used
1454    depends upon the particular authentication mechanism negotiated by
1455    the parties. For example: X.509 certificates, Kerberos tickets,
1456    simple identity and password pairs. Note that an authentication
1457    mechanism may constrain the form of authentication identities used
1458    with it.
1459
1460 B.4. Authorization Identity
1461
1462    An authorization identity is one kind of access control factor. It
1463    is the name of the user or other entity that requests that
1464    operations be performed. Access control policies are often expressed
1465
1466
1467 Harrison                 Expires August 2005                [Page 25]
1468 \f
1469 Internet-Draft       LDAP Authentication Methods        February 2005
1470
1471    in terms of authorization identities; e.g., entity X can perform
1472    operation Y on resource Z.
1473
1474    The authorization identity bound to an association is often exactly
1475    the same as the authentication identity presented by the client, but
1476    it may be different. SASL allows clients to specify an authorization
1477    identity distinct from the authentication identity asserted by the
1478    client's credentials. This permits agents such as proxy servers to
1479    authenticate using their own credentials, yet request the access
1480    privileges of the identity for which they are proxying [SASL]. Also,
1481    the form of authentication identity supplied by a service like TLS
1482    may not correspond to the authorization identities used to express a
1483    server's access control policy, requiring a server-specific mapping
1484    to be done. The method by which a server composes and validates an
1485    authorization identity from the authentication credentials supplied
1486    by a client is performed in an implementation-specific manner.
1487
1488 Appendix C. RFC 2829 Change History
1489
1490    This appendix lists the changes made to the text of RFC 2829 in
1491    preparing this document.
1492
1493 C.0. General Editorial Changes
1494    Version -00
1495
1496      - Changed other instances of the term LDAP to LDAP where v3 of the
1497        protocol is implied. Also made all references to LDAP use the
1498        same wording.
1499
1500      - Miscellaneous grammatical changes to improve readability.
1501
1502      - Made capitalization in section headings consistent.
1503
1504    Version -01
1505
1506      - Changed title to reflect inclusion of material from RFC 2830 and
1507        2251.
1508
1509 C.1. Changes to Section 1
1510
1511    Version -01
1512
1513      - Moved conventions used in document to a separate section.
1514
1515 C.2. Changes to Section 2
1516
1517    Version -01
1518
1519      - Moved section to an appendix.
1520
1521 C.3. Changes to Section 3
1522
1523    Version -01
1524
1525
1526 Harrison                 Expires August 2005                [Page 26]
1527 \f
1528 Internet-Draft       LDAP Authentication Methods        February 2005
1529
1530      - Moved section to an appendix.
1531
1532 C.4 Changes to Section 4
1533
1534    Version -00
1535
1536      - Changed "Distinguished Name" to "LDAP distinguished name".
1537
1538 C.5. Changes to Section 5
1539
1540    Version -00
1541
1542      - Added the following sentence: "Servers SHOULD NOT allow clients
1543        with anonymous authentication to modify directory entries or
1544        access sensitive information in directory entries."
1545
1546 C.5.1. Changes to Section 5.1
1547
1548    Version -00
1549
1550      - Replaced the text describing the procedure for performing an
1551        anonymous bind (protocol) with a reference to section 4.2 of RFC
1552        2251 (the protocol spec).
1553
1554    Version -01
1555
1556      - Brought text describing procedure for performing an anonymous
1557        bind from section 4.2 of RFC 2251 bis.  This text will be
1558        removed from the draft standard version of that document. 
1559
1560 C.6. Changes to Section 6.
1561
1562    Version -00
1563
1564      Reorganized text in section 6.1 as follows:
1565
1566      1. Added a new section (6.1) titled "Simple Authentication" and
1567        moved one of two introductory paragraphs for section 6 into
1568        section 6.1. Added sentences to the paragraph indicating:
1569
1570         a. simple authentication is not suitable for environments where
1571         confidentiality is not available.
1572
1573         b. LDAP implementations SHOULD NOT support simple
1574         authentication unless confidentiality and data integrity
1575         mechanisms are in force.
1576
1577      2. Moved first paragraph of section 6 (beginning with "LDAP
1578        implementations MUST support authentication with a password...")
1579        to section on Digest Authentication (Now section 6.2).
1580
1581 C.6.1. Changes to Section 6.1.
1582
1583    Version -00 Renamed section to 6.2
1584
1585 Harrison                 Expires August 2005                [Page 27]
1586 \f
1587 Internet-Draft       LDAP Authentication Methods        February 2005
1588
1589
1590      - Added sentence from original section 6 indicating that the
1591        DIGEST-MD5 SASL mechanism is required for all conforming LDAP
1592        implementations
1593
1594 C.6.2. Changes to Section 6.2
1595
1596    Version -00
1597
1598      - Renamed section to 6.3
1599
1600      - Reworded first paragraph to remove reference to user and the
1601        userPassword password attribute Made the first paragraph more
1602        general by simply saying that if a directory supports simple
1603        authentication that the simple bind operation MAY performed
1604        following negotiation of a TLS ciphersuite that supports
1605        confidentiality.
1606
1607      - Replaced "the name of the user's entry" with "a DN" since not
1608        all bind operations are performed on behalf of a "user."
1609
1610      - Added Section 6.3.1 heading just prior to paragraph 5.
1611
1612      - Paragraph 5: replaced "The server" with "DSAs that map the DN
1613        sent in the bind request to a directory entry with a
1614        userPassword attribute."
1615
1616 C.6.3. Changes to section 6.3.
1617
1618      Version -00
1619
1620      - Renamed to section 6.4.
1621
1622 C.7. Changes to section 7.
1623
1624    none
1625
1626 C.7.1. Changes to section 7.1.
1627
1628    Version -00
1629
1630      - Clarified the entity issuing a certificate by moving the phrase
1631        "to have issued the certificate" immediately after
1632        "Certification Authority."
1633
1634 C.8. Changes to section 8.
1635
1636    Version -00
1637
1638      - Removed the first paragraph because simple authentication is
1639        covered explicitly in section 6.
1640
1641      - Added section 8.1. heading just prior to second paragraph.
1642
1643
1644 Harrison                 Expires August 2005                [Page 28]
1645 \f
1646 Internet-Draft       LDAP Authentication Methods        February 2005
1647
1648      - Added section 8.2. heading just prior to third paragraph.
1649
1650      - Added section 8.3. heading just prior to fourth paragraph.
1651
1652    Version -01
1653
1654      - Moved entire section 8 of RFC 2829 into section 3.4 (Using SASL
1655        for Other Security Services) to bring material on SASL
1656        mechanisms together into one location.
1657
1658 C.9. Changes to section 9.
1659
1660    Version -00
1661
1662      - Paragraph 2: changed "EXTERNAL mechanism" to "EXTERNAL SASL
1663        mechanism."
1664
1665      - Added section 9.1. heading.
1666
1667      - Modified a comment in the ABNF from "unspecified userid" to
1668        "unspecified authz id".
1669
1670      - Deleted sentence, "A utf8string is defined to be the UTF-8
1671        encoding of one or more ISO 10646 characters," because it is
1672        redundant.
1673
1674      - Added section 9.1.1. heading.
1675
1676      - Added section 9.1.2. heading.
1677
1678    Version -01
1679
1680      - Moved entire section 9 to become section 3.5 so that it would be
1681        with other SASL material.
1682
1683 C.10. Changes to Section 10.
1684
1685    Version -00
1686
1687      - Updated reference to cracking from a week of CPU time in 1997 to
1688        be a day of CPU time in 2000.
1689
1690      - Added text: "These ciphersuites are NOT RECOMMENDED for use...
1691        and server implementers SHOULD" to sentence just prior the
1692        second list of ciphersuites.
1693
1694      - Added text: "and MAY support other ciphersuites offering
1695        equivalent or better protection," to the last paragraph of the
1696        section.
1697
1698 C.11. Changes to Section 11.
1699
1700    Version -01
1701
1702
1703 Harrison                 Expires August 2005                [Page 29]
1704 \f
1705 Internet-Draft       LDAP Authentication Methods        February 2005
1706
1707      - Moved to section 3.6 to be with other SASL material.
1708
1709 C.12. Changes to Section 12.
1710
1711    Version -00
1712
1713      - Inserted new section 12 that specifies when SASL protections
1714        begin following SASL negotiation, etc. The original section 12
1715        is renumbered to become section 13.
1716
1717    Version -01
1718
1719      - Moved to section 3.7 to be with other SASL material.
1720
1721 C.13. Changes to Section 13 (original section 12).
1722
1723    None
1724
1725 Appendix D. RFC 2830 Change History
1726
1727    This appendix lists the changes made to the text of RFC 2830 in
1728    preparing this document.
1729
1730 D.0. General Editorial Changes
1731
1732      - Material showing the PDUs for the StartTLS response was broken
1733        out into a new section.
1734
1735      - The wording of the definition of the StartTLS request and
1736        StartTLS response was changed to make them parallel. NO changes
1737        were made to the ASN.1 definition or the associated values of
1738        the parameters.
1739
1740      - A separate section heading for graceful TLS closure was added
1741        for parallelism with section on abrupt TLS closure.
1742
1743 Appendix E. RFC 2251 Change History
1744
1745    This appendix lists the changes made to the text of RFC 2251 in
1746    preparing this document.
1747
1748 E.0. General Editorial Changes
1749
1750      - All material from section 4.2 of RFC 2251 was moved into this
1751        document.
1752
1753      - A new section was created for the Bind Request
1754
1755      - Section 4.2.1 of RFC 2251 (Sequencing Bind Request) was moved
1756        after the section on the Bind Response for parallelism with the
1757        presentation of the StartTLS operations. The section was also
1758        subdivided to explicitly call out the various effects being
1759        described within it.
1760       
1761
1762 Harrison                 Expires August 2005                [Page 30]
1763 \f
1764 Internet-Draft       LDAP Authentication Methods        February 2005
1765
1766      - All SASL profile information from RFC 2829 was brought within
1767        the discussion of the Bind operation (primarily sections 4.4 -
1768        4.7).
1769
1770 Appendix F. Change History to Combined Document
1771
1772 F.1. Changes for draft-ldap-bis-authmeth-02
1773
1774    General
1775
1776      - Added references to other LDAP standard documents, to sections
1777        within the document, and fixed broken references.
1778
1779      - General editorial changes--punctuation, spelling, formatting,
1780        etc.
1781
1782    Section 1.
1783
1784      - Added glossary of terms and added sub-section headings
1785
1786    Section 2.
1787
1788      - Clarified security mechanisms 3, 4, & 5 and brought language in
1789        line with IETF security glossary.
1790
1791    Section 3.
1792
1793      - Brought language in requirement (3) in line with security
1794        glossary.
1795
1796      - Clarified that information fetched prior to initiation of TLS
1797        negotiation must be discarded
1798
1799      -Clarified that information fetched prior to initiation of SASL
1800        negotiation must be discarded
1801
1802      - Rewrote paragraph on SASL negotiation requirements to clarify
1803        intent
1804
1805    Section 4.4.
1806
1807      - Added stipulation that sasl choice allows for any SASL mechanism
1808        not prohibited by this document. (Resolved conflict between this
1809        statement and one that prohibited use of ANONYMOUS and PLAIN
1810        SASL mechanisms.)
1811
1812    Section 5.3.6
1813
1814      - Added a.x.bar.com to wildcard matching example on hostname check.
1815
1816    Section 6
1817
1818
1819
1820
1821 Harrison                 Expires August 2005                [Page 31]
1822 \f
1823 Internet-Draft       LDAP Authentication Methods        February 2005
1824
1825      - Added Association State Transition Tables to show the various
1826        states through which an association may pass along with the
1827        actions and decisions required to traverse from state to state.
1828
1829    Appendix A
1830
1831      - Brought security terminology in line with IETF security glossary
1832        throughout the appendix.
1833
1834 F.2. Changes for draft-ldapbis-authmeth-03
1835
1836    General
1837
1838      - Added introductory notes and changed title of document and
1839        references to conform to WG chair suggestions for the overall
1840        technical specification.
1841
1842      - Several issues--H.13, H.14, H.16, H.17--were resolved without
1843        requiring changes to the document.
1844
1845    Section 3
1846
1847      - Removed reference to /etc/passwd file and associated text. 
1848
1849    Section 4
1850
1851      - Removed sections 4.1, 4.2 and parts of section 4.3. This
1852        information was being duplicated in the protocol specification
1853        and will now reside there permanently.
1854    Section 4.2
1855
1856      - changed words, "not recommended" to "strongly discouraged"
1857
1858    Section 4.3
1859
1860      - Based on ldapbis WG discussion at IETF52 two sentences were
1861        added indicating that clients SHOULD NOT send a DN value when
1862        binding with the sasl choice and servers SHALL ignore any value
1863        received in this circumstance.
1864      -
1865
1866    Section 8.3.1
1867
1868      - Generalized the language of this section to not refer to any
1869        specific password attribute or to refer to the directory entry
1870        as a "user" entry.
1871
1872    Section 11
1873
1874      - Added security consideration regarding misuse of unauthenticated
1875        access.
1876
1877      - Added security consideration requiring access control to be
1878        applied only to authenticated users and recommending it be
1879
1880 Harrison                 Expires August 2005                [Page 32]
1881 \f
1882 Internet-Draft       LDAP Authentication Methods        February 2005
1883
1884        applied when reading sensitive information or updating directory
1885        information.
1886
1887 F.3. Changes for draft-ldapbis-authmeth-04
1888
1889    General
1890
1891      - Changed references to use [RFCnnnn] format wherever possible.
1892        (References to works in progress still use [name] format.)
1893      - Various edits to correct typos and bring field names, etc. in
1894        line with specification in [Protocol] draft.
1895
1896      - Several issues--H.13, H.14, H.16, H.17--were resolved without
1897        requiring changes to the document.
1898
1899    Section 4.4.1.
1900
1901      - Changed ABNF grammar to use productions that are like those in
1902        the model draft.
1903
1904    Section 5
1905
1906      - Removed sections 5.1, 5.2, and 5.4 that will be added to
1907        [Protocol]. Renumbered sections to accommodate this change.
1908      -
1909
1910    Section 6
1911
1912      - Reviewed Association State table for completeness and accuracy.
1913        Renumbered actions A3,  , and A5 to be A5, A3, and A4
1914        respectively. Re-ordered several lines in the table to ensure
1915        that actions are in ascending order (makes analyzing the table
1916        much more logical). Added action A2 to several states where it
1917        was missing and valid. Added actions A7 and A8 placeholders to
1918        states S1, S2, S4 and S5 pending resolution of issue H.28.
1919
1920    Section 11
1921
1922      - Modified security consideration (originally added in -03)
1923        requiring access control to be applied only to authenticated
1924        users. This seems nonsensical because anonymous users may have
1925        access control applied to limit permissible actions.
1926      -  
1927    Section 13
1928
1929      - Verified all normative references and moved informative
1930        references to a new section 14.
1931
1932 F.4. Changes for draft-ldapbis-authmeth-05
1933
1934    General
1935
1936      - General editory changes to fix punctuation, spelling, line
1937        length issues, etc.
1938
1939 Harrison                 Expires August 2005                [Page 33]
1940 \f
1941 Internet-Draft       LDAP Authentication Methods        February 2005
1942
1943      - Verified and updated intra- and inter-document references
1944        throughout.
1945      - Document-wide review for proper usage of RFC 2119 keywords with
1946        several changes to correct improper usage.
1947
1948    Abstract
1949      - Updated to match current contents of documents. This was needed
1950        due to movement of material on Bind and StartTLS operations to
1951        [Protocol] in this revision.
1952
1953    Section 3.
1954
1955      - Renamed section to "Rationale for LDAP Security Mechanisms" and
1956        removed text that did not support this theme. Part of the
1957        motivation for this change was to remove the implication of the
1958        previous section title, "Required Security Mechanisms", and
1959        other text found in the section that everything in the section
1960        was a requirement
1961
1962      - Information from several removed paragraphs that describe
1963        deployment scenarios will be added Appendix A in the next
1964        revision of the draft.
1965
1966
1967      - Paragraph beginning, " If TLS is negotiated, the client MUST
1968        discard all information..." was moved to section 5.1.7 and
1969        integrated with related material there.
1970
1971      - Paragraph beginning, "If a SASL security layer is negotiated..."
1972        was moved to section 4.2
1973
1974    Section 4.l.
1975
1976      - Changed wording of first paragraph to clarify meaning.
1977
1978    Section 4.2.
1979      - Added paragraph from section 3 of -04 beginning, "If a SASL
1980        security layer is negotiated..."
1981
1982    Section 4.3.3.
1983      - Renamed to "Other SASL Mechanisms" and completely rewrote the
1984        section (one sentence) to generalize the treatment of SASL
1985        mechanisms not explicitly mentioned in this document. 
1986
1987    Section 4.4.1.
1988
1989      - Added paragraph beginning, "The dnAuthzID choice allows client
1990        applications..." to clarify whether DN form authorization
1991        identities have to also have a corresponding directory entry.
1992        This change was based on editor's perception of WG consensus.
1993
1994      - Made minor clarifying edits in the paragraph beginning, "The
1995        uAuthzID choice allows for compatibility..."
1996
1997
1998 Harrison                 Expires August 2005                [Page 34]
1999 \f
2000 Internet-Draft       LDAP Authentication Methods        February 2005
2001
2002    Section 5.1.1.
2003
2004      - Made minor clarifying edits in the last paragraph of the
2005        section.
2006
2007    Section 5.1.7.
2008
2009      - Wording from section 3 paragraph beginning " If TLS is
2010        negotiated, the client MUST discard all information..." was
2011        moved to this section and integrated with existing text.
2012
2013    Section 5.2.
2014
2015      - Changed usage of "TLS connection" to "TLS session" throughout.
2016
2017      - Removed empty section 5.2.1 and renumbered sections it had
2018        previously contained.
2019
2020    Section 8.
2021
2022      - Added introductory paragraph at beginning of section.
2023
2024    Section 8.1.
2025
2026      - Changed term  "data privacy" to "data confidentiality" to be
2027        consistent with usage in rest of document. 
2028
2029    Section 8.2.
2030
2031      - Changed first paragraph to require implementations that
2032        implement *password-based* authentication to implement and
2033        support DIGEST-MD5 SASL authentication.
2034
2035    Section 11.
2036
2037      - First paragraph: changed "session encryption" to "session
2038        confidentiality protection" to be consistent with usage in rest
2039        of document.
2040
2041    Appendix B.
2042
2043      - Began changes to incorporate information on deployment scenarios
2044        removed from section 3.
2045
2046 F.5. Changes for draft-ldapbis-authmeth-06
2047
2048    General
2049
2050      - Combined Section 2 (Introduction) and Section 3 (Motivation) and
2051        moved Introduction to section 1. All following sections numbers
2052        were decremented by one as result.
2053
2054      - Edits to fix typos, I-D nits, etc.
2055
2056
2057 Harrison                 Expires August 2005                [Page 35]
2058 \f
2059 Internet-Draft       LDAP Authentication Methods        February 2005
2060
2061      - Opened several new issues in Appendix G based on feedback from
2062        WG. Some of these have been resolved. Others require further
2063        discussion.
2064
2065    Section 1
2066
2067      - Added additional example of spoofing under threat (7).
2068
2069    Section 2.1
2070
2071      - Changed definition of "association" and added terms,
2072        "connection" and "TLS connection" to bring usage in line with
2073        [Protocol].
2074
2075    Section 4.1.6
2076
2077      - Clarified sentence stating that the client MUST NOT use derived
2078        forms of DNS names.
2079
2080    Section 5.1
2081
2082      - Began edits to association state table to clarify meaning of
2083        various states and actions.
2084
2085      - Added action A9 to cover abandoned bind operation and added
2086        appropriate transitions to the state transition table to
2087        accommodate it.
2088
2089    Section 7.2
2090
2091      - Replaced first paragraph to clarify that the "DIGEST-MD5" SASL
2092        mechanism is required to implement.
2093
2094    Section 9
2095
2096      - Rewrote the section to make the advice more applicable over the
2097        long term, i.e. more "timeless." The intent of content in the
2098        original section was preserved.
2099
2100    Section 10
2101
2102      - Added a clarifying example to the consideration regarding misuse
2103        of unauthenticated access. 
2104
2105 F.6. Changes for draft-ldapbis-authmeth-07
2106
2107    General
2108
2109      - Updated external and internal references to accommodate changes
2110        in recent drafts.
2111
2112      - Opened several new issues in Appendix G based on feedback from
2113        WG. Some of these have been resolved. Others require further
2114        discussion.
2115
2116 Harrison                 Expires August 2005                [Page 36]
2117 \f
2118 Internet-Draft       LDAP Authentication Methods        February 2005
2119
2120
2121    Section 3
2122
2123      - Rewrote much of section 3.3 to meet the SASL profile
2124        requirements of draft-ietf-sasl-rfc2222bis-xx.txt section 5.
2125
2126      - Changed treatement of SASL ANONYMOUS and PLAIN mechanisms to
2127        bring in line with WG consensus.
2128
2129    Section 4
2130
2131      - Note to implementers in section 4.1.1 based on operational
2132        experience.
2133
2134      - Clarification on client continuing by performing a StartTLS with
2135        TLS already established in section 4.1.4.
2136
2137      - Moved verification of mapping of client's authentication ID to
2138        asserted authorization ID to apply only to explicit assertion.
2139        The local policy in place for implicit assertion is adequate.
2140
2141    Section 7
2142
2143      - Removed most of section 7.2 as the information is now covered
2144        adequately via the new SASL profile in section 3.3. Added note
2145        to implementors regarding the treatment of username and realm
2146        values in DIGEST-MD5.
2147
2148      - Section 7.3. Minor clarifications in wording.
2149
2150      - Section 7.3.1. Clarification that a match of the presented value
2151        to any member of the set of stored passwords constitutes a
2152        successful authentication.
2153
2154 F.7. Changes for draft-ldapbis-authmeth-08
2155
2156    General
2157
2158      - Changed usage from LDAPv3 to LDAP for usage consistency across
2159        LDAP technical specification.
2160
2161      - Fixed a number of usage nits for consistency and to bring doc in
2162        conformance with publication guidelines.
2163
2164    Abstract
2165
2166      - Significant cleanup and rewording of abstract based on WG
2167        feedback.
2168
2169    Section 2.1
2170
2171      - New definition of user.
2172
2173    Section 3
2174
2175 Harrison                 Expires August 2005                [Page 37]
2176 \f
2177 Internet-Draft       LDAP Authentication Methods        February 2005
2178
2179
2180      - Added 1.5 sentences at end of introductory paragraph indicating
2181        the effect of the Bind op on the association.
2182
2183    Section 3.1
2184
2185      - Retitled section and clarified wording
2186
2187    Section 3.2
2188
2189      - Clarified that simple authentication choice provides three types
2190        of authentication: anonymous, unauthenticated, and simple
2191        password.
2192
2193    Section 3.3.3
2194
2195      - New wording clarifying when negotiated security mechanisms take
2196        effect.
2197
2198    Section 3.3.5
2199
2200      - Changed requirement to discard information about server fetched
2201        prior to SASL negotiation from MUST to SHOULD to allow for
2202        information obtained through secure mechanisms.
2203
2204    Section 3.3.6
2205
2206      - Simplified wording of first paragraph based on suggestion from
2207        WG.
2208
2209    Section 3.4
2210
2211      - Minor clarifications in wording.
2212
2213    Section 3.4.1
2214
2215      - Minor clarifications in wording in first sentence.
2216      - Explicitly called out that the DN value in the dnAuthzID form is
2217        to be matched using DN matching rules.
2218      - Called out that the uAuthzID MUST be prepared using SASLprep
2219        rules before being compared.
2220      - Clarified requirement on assuming global uniqueness by changing
2221        a "generally... MUST" wording to "SHOULD".
2222
2223    Section 4.1.1
2224
2225      - Simplified wording describing conditions when StartTLS cannot be
2226        sent.
2227      - Simplified wording in note to implementers regarding race
2228        condition with outstanding LDAP operations on connection.
2229
2230    Section 4.1.5
2231
2232      - Removed section and moved relevant text to section 4.2.2.
2233
2234 Harrison                 Expires August 2005                [Page 38]
2235 \f
2236 Internet-Draft       LDAP Authentication Methods        February 2005
2237
2238
2239    Section 4.1.6 
2240
2241      - Renumbered to 4.1.5.
2242      - Updated server identity check rules for server's name based on
2243        WG list discussion.
2244
2245    Section 4.1.7
2246
2247      - Renumbered to 4.1.6
2248      - Changed requirement to discard information about server fetched
2249        prior to TLS negotion from MUST to SHOULD to allow for
2250        information obtained through secure mechanisms.
2251
2252    Section 6.1
2253
2254      - Clarified wording.
2255      - Added definition of anonymous and unauthenticated binds.
2256
2257    Section 10
2258
2259      - Added security consideration (moved from elsewhere) discouraging
2260        use of cleartext passwords on unprotected communication
2261        channels.
2262
2263    Section 11
2264
2265      - Added an IANA consideration to update GSSAPI service name
2266        registry to point to [Roadmap] and [Authmeth]
2267
2268 F.8. Changes for draft-ldapbis-authmeth-09
2269
2270    General
2271
2272      - Updated section references within document
2273      - Changed reference tags to match other docs in LDAP TS
2274      - Used non-quoted names for all SASL mechanisms
2275
2276    Abstract
2277
2278      - Inspected keyword usage and removed several improper usages.
2279
2280      - Removed sentence saying DIGEST-MD5 is LDAP's mandatory-to-
2281        implement mechanism. This is covered elsewhere in document.
2282
2283      - Moved section 5, authentication state table, of -08 draft to
2284        section 8 of -09 and completely rewrote it.
2285
2286    Section 1
2287
2288      - Reworded sentence beginning, "It is also desirable to allow
2289        authentication methods to carry identities based on existing,
2290        non-LDAP DN-forms..."
2291
2292
2293 Harrison                 Expires August 2005                [Page 39]
2294 \f
2295 Internet-Draft       LDAP Authentication Methods        February 2005
2296
2297      - Clarified relationship of this document to other documents in
2298        the LDAP TS.
2299
2300    Section 3.3.5
2301
2302      - Removed paragraph beginning,"If the client is configured to
2303        support multiple SASL mechanisms..." because the actions
2304        specified in the paragraph do not provide the protections
2305        indicated. Added a new paragraph indicating that clients and
2306        server should allow specification of acceptable mechanisms and
2307        only allow those mechanisms to be used.
2308
2309      - Clarified independent behavior when TLS and SASL security layers
2310        are both in force (e.g. one being removed doesn't affect the
2311        other).
2312
2313    Section 3.3.6
2314
2315      - Moved most of section 4.2.2, Client Assertion of Authorization
2316        Identity, to sections 3.3.6, 3.3.6.1, and 3.3.6.2. 
2317
2318    Section 3.3.6.4
2319
2320      - Moved some normative comments into text body.
2321
2322    Section 4.1.2
2323
2324      - Non success resultCode values are valid if server is *unwilling*
2325        or unable to negotiate TLS.
2326
2327    Section 4.2.1
2328
2329      - Rewrote entire section based on WG feedback.
2330
2331    Section 4.2.2
2332
2333      - Moved most of this section to 3.3.6 for better document flow.
2334
2335    Section 4.2.3
2336
2337      - Rewrote entire section based on WG feedback.
2338
2339    Section 5.1
2340
2341      - Moved imperative language regarding unauthenticated access from
2342        security considerations to here.
2343
2344    Section 6
2345
2346      - Added several paragraphs regarding the risks of transmitting
2347        passwords in the clear and requiring server implementations to
2348        provide a specific configuration that reduces these risks.
2349
2350    Section 6.2
2351
2352 Harrison                 Expires August 2005                [Page 40]
2353 \f
2354 Internet-Draft       LDAP Authentication Methods        February 2005
2355
2356
2357      - Added sentence describing protections provided by DIGEST-MD5
2358        method.
2359      - Changed DNs in exmple to be dc=example,dc=com.
2360
2361    Section 10
2362
2363      - Updated consideration on use of cleartext passwords to include
2364        other unprotected authentication credentials
2365      - Substantial rework of consideration on misuse of unauthenticated
2366        bind.
2367
2368 F.9. Changes for draft-ldapbis-authmeth-10
2369
2370      - Reorganized content of sections 3-9 to improve document flow and
2371        reduce redundancy.
2372      - Resolved issue of effect of Start TLS and TLS closure on
2373        association state.
2374      - Made numerous minor wording changes based on WG feedback.
2375      - Updated list of threats for Section 1.
2376      - Recommendation that servers should not support weaker TLS
2377        ciphersuites unless other protection is in place.
2378      - Moved authentication state table to appendix and relettered
2379        appendices.
2380
2381 F.10. Changes for draft-ldapbis-authmeth-11
2382
2383    General
2384
2385      - Many editorial changes throughout to clarify wording and better
2386        express intent, primarily based on suggestions from WG mail
2387        list.
2388      - More standard naming of authentication mechanisms throughout
2389        document, e.g. "Anonymous Authentication Mechanism of the Simple
2390        Bind Choice".
2391
2392    Section 1
2393
2394      - Editorial changes to add clarity.
2395      - Moved section 2 of authmeth -09 into section 1
2396
2397    Section 2
2398
2399      - New section outlining implementation requirements.
2400
2401    Section 3.1.1
2402
2403      - Editorial clarification on need for following operation
2404        sequencing requirements.
2405
2406    Section 3.1.4
2407
2408
2409
2410
2411 Harrison                 Expires August 2005                [Page 41]
2412 \f
2413 Internet-Draft       LDAP Authentication Methods        February 2005
2414
2415      - New section added to describe use of client certificates with
2416        StartTLS. Incorporates material moved from other sections of
2417        authmeth -09.
2418
2419    Section 4
2420      - New section added to discuss associations. Related material was
2421        moved from various other sections of authmeth -09 and
2422        incorporated into this new section.
2423
2424    Section 5
2425
2426      - Added several paragraphs regarding transmission and derivation
2427        of authentication and authorization identities using the Bind
2428        operation.
2429
2430    Section 8
2431
2432      - Clarified rules for determining valid credentials and situations
2433        where invalidCredentials result is to be returned.
2434
2435    Section 14
2436
2437      - Added three security considerations based on WG feedback.
2438
2439    Appendix A
2440
2441      - Simplfied state tables by removing two unnecessary actions from
2442        the actions table, and removing the current state column of the
2443        state transition table. Updated references to authmeth and
2444        [Protocol].
2445
2446 F.11. Changes for draft-ldapbis-authmeth-12
2447
2448    General
2449
2450      - Changed refererences from Start TLS to StartTLS.
2451      - Removed Appendix B: Example Deployment Scenarios
2452      - Removed Appendix H as all issues listed in the appendix are now
2453        resolved.
2454
2455    Section 2
2456
2457      - Added implementation requirement that server implementations
2458        that SUPPORT StartTLS MUST support the
2459        TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA ciphersuite.
2460
2461    Section 3.1.2
2462
2463      - Added wording clarifying that a client's association is
2464        unaffected if a non-success resultCode is returned in the
2465        StartTLS response.
2466
2467    Section 9.2
2468
2469
2470 Harrison                 Expires August 2005                [Page 42]
2471 \f
2472 Internet-Draft       LDAP Authentication Methods        February 2005
2473
2474      - Final paragraph of this section details requirements for
2475        serverSaslCreds field when no challenge value is sent.
2476
2477    Section 10
2478
2479      - Clarified language on uAuthzID usage.
2480
2481    Section 12
2482
2483      - Moved entire section into security considerations. New section
2484        number is 12.1.1.
2485      - Reorganized security considerations by topic.
2486      - Added several security considerations based on WG feedback.
2487
2488    Section 13
2489
2490      - Moved section to become section 3.3. 
2491
2492 F.12. Changes for draft-ldapbis-authmeth-13
2493
2494    General
2495
2496      - General edits for clarity and to remove errors.
2497      - Reworded definition of association (section 1.2) and reworked
2498        usage of association throughout document. Current semantics:
2499        every connection has an association with the same lifetime as
2500        the connection, and that association passes through various
2501        authorization states.
2502      - Made usage of data confidentiality consistent throughout
2503        document.
2504
2505    Section 1
2506      - Reworded mechanisms 3 and 4 for more parallelism.
2507      - Changed language on rationale for required mechanisms from
2508        future to past tense.
2509
2510    Section 2
2511      - Clarified that implementations may support any additional
2512        authentication mechanism, not just mechanisms associated with
2513        simple and SASL bind choices.
2514
2515    Section 3
2516      - Moved paragraph explaining goals for using TLS with LDAP from
2517        security considerations to here.
2518
2519    Section 4.3
2520      - Reworked text to better explain meaning of strongAuthRequired
2521        resultCode when for invalidated associations.
2522
2523    Section 8
2524      - Clarified action when simple bind request has a DN with invalid
2525        syntax.
2526
2527    Section 12.1
2528
2529 Harrison                 Expires August 2005                [Page 43]
2530 \f
2531 Internet-Draft       LDAP Authentication Methods        February 2005
2532
2533      - Added ability to configure and enforce administrative service
2534        limits as a way to protect against denial of service attacks.
2535
2536    Section 12.2
2537      - Clarified that this security consideration relates to performing
2538        client authentication during the TLS handshake and not to
2539        subsequent SASL EXTERNAL authentication.
2540
2541    Appendix A
2542      - Updated tables by collapsing identical states and actions. Also
2543        added an invalidated association state and accompanying actions.
2544
2545
2546
2547 F.13. Changes for draft-ldapbis-authmeth-14
2548
2549    General
2550
2551      - Moved to standardized LDAP TS terms: transport connection, TLS
2552        layer, SASL layer, and LDAP message layer. Reworked usage of
2553        terminology throughout document to conform to latest usage.
2554      - Changed language on resultCode values to be less prescriptive
2555        and more descriptive.
2556
2557    Section 1
2558      - Changed format and definitions of terms to parallel latest
2559        revision of [Protocol].
2560
2561    Section 2
2562      - Updated implementation requirements for protecting LDAP simple
2563        bind mechanism to conform to WG consensus.
2564
2565    Section 3.1.1
2566      - Moved last paragraph to security considerations and made
2567        generalized discussion of use of confidentialityRequired
2568        resultCode general for all data confidentiality services not
2569        just TLS.
2570
2571    Section 3.1.4
2572        ûRewrote last paragraph to clarify that SASL EXTERNAL is a
2573          client action when server uses certificate information to
2574          derive authorization ID.
2575
2576    Section 3.2
2577        ûCollapsed three subsections into a single subsection. Removed
2578          text that implied that the TLS credentials were the only lower
2579          layer credentials that are used by SASL EXTERNAL in determining
2580          authentication ID and authorization ID.
2581
2582    Section 8
2583      - Removed most of last paragraph that was redundant with
2584        implementation requirements in section 2.
2585
2586    Section 10
2587
2588 Harrison                 Expires August 2005                [Page 44]
2589 \f
2590 Internet-Draft       LDAP Authentication Methods        February 2005
2591
2592      - Changed to SASL DIGEST-MD5 (was section 11 in -13 revision)
2593
2594    Section 11
2595      - Changed to SASL EXTERNAL (was section 10 in -13 revision). Moved
2596        discussion of SASL authorization identities to Section 9.7.
2597        Clarified language around implicit and explicit assertion of
2598        authroization identities.
2599
2600    Appendix A
2601      - Further collapsed identical states and actions continuing work
2602        in previous revisions.
2603
2604 Intellectual Property Rights
2605
2606    The IETF takes no position regarding the validity or scope of any
2607    Intellectual Property Rights or other rights that might be claimed
2608    to pertain to the implementation or use of the technology described
2609    in this document or the extent to which any license under such
2610    rights might or might not be available; nor does it represent that
2611    it has made any independent effort to identify any such rights.
2612    Information on the procedures with respect to rights in RFC
2613    documents can be found in BCP 78 and BCP 79.
2614
2615    Copies of IPR disclosures made to the IETF Secretariat and any
2616    assurances of licenses to be made available, or the result of an
2617    attempt made to obtain a general license or permission for the use
2618    of such proprietary rights by implementers or users of this
2619    specification can be obtained from the IETF on-line IPR repository
2620    at http://www.ietf.org/ipr.
2621
2622    The IETF invites any interested party to bring to its attention any
2623    copyrights, patents or patent applications, or other proprietary
2624    rights that may cover technology that may be required to implement
2625    this standard.  Please address the information to the IETF at ietf-
2626    ipr@ietf.org.
2627
2628 Full Copyright Statement
2629
2630    Copyright (C) The Internet Society (2004).  This document is subject
2631    to the rights, licenses and restrictions contained in BCP 78, and
2632    except as set forth therein, the authors retain all their rights.
2633
2634    This document and the information contained herein are provided on
2635    an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE
2636    REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE
2637    INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR
2638    IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
2639    THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
2640    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
2641
2642
2643
2644
2645
2646
2647 Harrison                 Expires August 2005                [Page 45]
2648 \f