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