| < draft-zeilenga-ldap-authpasswd-04.txt | draft-zeilenga-ldap-authpasswd-05.txt > | |||
|---|---|---|---|---|
| A new Request for Comments is now available in online RFC libraries. | ||||
| INTERNET-DRAFT Kurt D. Zeilenga | RFC 3112 | |||
| Intended Category: Standard Track OpenLDAP Foundation | ||||
| Expires: 20 July 2001 20 January 2001 | ||||
| LDAP Authentication Password Attribute | ||||
| <draft-zeilenga-ldap-authpasswd-04.txt> | ||||
| 1. Status of this Memo | ||||
| This document is an Internet-Draft and is in full conformance with all | ||||
| provisions of Section 10 of RFC2026. | ||||
| This document is intended to be, after appropriate review and | ||||
| revision, submitted to the RFC Editor as an Standard Track document. | ||||
| Distribution of this memo is unlimited. Technical discussion of this | ||||
| document will take place on the IETF LDAP Extension Working Group | ||||
| mailing list <ietf-ldapext@netscape.com>. Please send editorial | ||||
| comments directly to the author <Kurt@OpenLDAP.org>. | ||||
| Internet-Drafts are working documents of the Internet Engineering Task | ||||
| Force (IETF), its areas, and its working groups. Note that other | ||||
| groups may also distribute working documents as Internet-Drafts. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | ||||
| and may be updated, replaced, or obsoleted by other documents at any | ||||
| time. It is inappropriate to use Internet-Drafts as reference | ||||
| material or to cite them other than as ``work in progress.'' | ||||
| The list of current Internet-Drafts can be accessed at | ||||
| http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft | ||||
| Shadow Directories can be accessed at http://www.ietf.org/shadow.html. | ||||
| Copyright 2001, The Internet Society. All Rights Reserved. | ||||
| Please see the Copyright section near the end of this document for | ||||
| more information. | ||||
| 2. Abstract | ||||
| This document describes schema in support of user/password | ||||
| authentication in a LDAP directory including the authPassword | ||||
| attribute type. This attribute type holds values derived from the | ||||
| user's password(s) (commonly using cryptographic strength one-way | ||||
| hash). authPassword is intended to used instead of userPassword. | ||||
| The key words ``MUST'', ``MUST NOT'', ``REQUIRED'', ``SHALL'', ``SHALL | ||||
| NOT'', ``SHOULD'', ``SHOULD NOT'', ``RECOMMENDED'', and ``MAY'' in | ||||
| this document are to be interpreted as described in RFC 2119 | ||||
| [RFC2119]. | ||||
| 3. Background and Intended Use | ||||
| The userPassword attribute type [RFC 2256] is intended be used to used | ||||
| to support the LDAP [RFC2251] "simple" bind operation. However, | ||||
| values of userPassword must be clear text passwords. It is often | ||||
| desirable to store values derived from the user's password(s) instead | ||||
| of actual passwords. | ||||
| The authPassword attribute type is intended to be used to store | ||||
| information used to implement simple password based authentication. | ||||
| The attribute type may be used by LDAP servers to implement the LDAP | ||||
| Bind operation's "simple" authentication method. | ||||
| The attribute type supports multiple storage schemes. A matching rule | ||||
| is provided for use with extensible search filters to allow clients to | ||||
| assert that a clear text password "matches" one of the attribute's | ||||
| values. | ||||
| Storage schemes often use of cryptographic strength one-way hashing. | ||||
| Though the use of one-way hashing reduces the potential that exposed | ||||
| values will allow unauthorized access to the Directory (unless the | ||||
| hash algorithm/implementation is flawed), the hashing of passwords is | ||||
| intended to be as an additional layer of protection. It is | ||||
| RECOMMENDED that hashed values be protected as if they were clear text | ||||
| passwords. | ||||
| This attribute may be used in conjunction with server side password | ||||
| generation mechanisms (such as [PW-EXOP]). | ||||
| Access to this attribute may governed by administrative controls such | ||||
| as those which implement password change policies. | ||||
| 4. Schema Definitions | ||||
| The following schema definitions are described in terms of LDAPv3 | ||||
| Attribute Syntax Definitions [RFC2252] with specific syntax detailed | ||||
| using Augmented BNF [RFC2234]. | ||||
| Editor's Note: object identifiers (OIDs) will be assigned before this | ||||
| document is published as an RFC. | ||||
| 4.1. authPasswordSyntax | ||||
| ( authPasswordSyntaxOID | ||||
| DESC 'authentication password syntax' ) | ||||
| Values of this syntax are encoded according to: | ||||
| authPasswordValue = w scheme s [authInfo] s authValue w | ||||
| scheme = %x30-39 / %x41-5A / %x2D-2F / %x5F | ||||
| ; 0-9, A-Z, "-", ".", "/", or "_" | ||||
| authInfo = schemeSpecificValue | ||||
| authValue = schemeSpecificValue | ||||
| schemeSpecificValue = *( %x21-23 / %25-7E ) | ||||
| ; printable ascii less "$" and " " | ||||
| s = w sep w | ||||
| w = *sp | ||||
| sep = %x24 ; dollar sign | ||||
| sp = %x20 ; space | ||||
| where scheme describes the mechanism and authInfo and authValue are a | ||||
| scheme specific. The authInfo field is often a base64 encoded salt. | ||||
| The authValue field is often a base64 encoded value derived from a | ||||
| user's password(s). Values of this attribute are case sensitive. | ||||
| This document describes a number of schemes, as well as requirements | ||||
| for the scheme naming, in section 5. | ||||
| 4.2. authPasswordMatch | ||||
| ( authPasswordMatchOID | ||||
| NAME 'authPasswordMatch' | ||||
| DESC 'authentication password matching rule' | ||||
| SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{128} ) | ||||
| This matching rule allows a client to assert that a password matches | ||||
| values of authPasswordSyntax using an extensibleMatch filter | ||||
| component. Each value is matched per its scheme. The assertion is | ||||
| TRUE if one or more attribute values matches the asserted value, FALSE | ||||
| if all values do not matches, and Undefined otherwise. | ||||
| Servers which support use of this matching rule SHOULD publish | ||||
| appropriate matchingRuleUse values per [RFC2252], 4.4. | ||||
| Transfer of authPasswordMatch assertion values is strongly discouraged | ||||
| where the underlying transport service cannot guarantee | ||||
| confidentiality and may result in disclosure of the values to | ||||
| unauthorized parties. | ||||
| 4.3. supportedAuthPasswordSchemes | ||||
| ( supportedAuthPasswordSchemesOID | ||||
| NAME 'supportedAuthPasswordSchemes' | ||||
| DESC 'supported password storage schemes' | ||||
| EQUALITY caseExactIA5Match | ||||
| SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{32} | ||||
| USAGE dSAOperation ) | ||||
| The values of this attribute are names of supported authentication | ||||
| password schemes which the server supports. The syntax of a scheme | ||||
| name is described in section 4.1. This attribute may only be present | ||||
| in the root DSE. If the server does not support any password schemes, | ||||
| this attribute will not be present. | ||||
| 4.4. authPassword | ||||
| ( authPasswordOID NAME 'authPassword' | ||||
| SYNTAX authPasswordSyntaxOID ) | ||||
| The values of this attribute are representative of the user's | ||||
| password(s) and conform to the authPasswordSyntax described in 4.1. | ||||
| The values of this attribute may be used for authentication purposes. | ||||
| This attribute type is defined without any built-in matching rules. | ||||
| The absence of an EQUALITY matching rules disallows modification of | ||||
| individual values. | ||||
| Transfer of authPassword values is strongly discouraged where the | ||||
| underlying transport service cannot guarantee confidentiality and may | ||||
| result in disclosure of the values to unauthorized parties. | ||||
| 4.5. authPasswordObject | ||||
| ( authPasswordObjectOID NAME 'authPasswordObject' | ||||
| DESC 'authentication password mix in class' | ||||
| MAY 'authPassword' AUXILIARY ) | ||||
| Entries of this object class may contain authPassword attribute types. | ||||
| 5. Schemes | ||||
| This section describes the "MD5" and "SHA1". Other schemes may be | ||||
| defined by other documents. Schemes which are not described by | ||||
| standard track documents SHOULD be named with a leading "X-" to | ||||
| indicate they are a private or implementation specific scheme, or may | ||||
| be named using the dotted-decimal representation [RFC2252] of an OID | ||||
| assigned to the scheme. | ||||
| 5.1. MD5 scheme | ||||
| The MD5 [RFC1321] scheme name is "MD5". | ||||
| The authValue is the base64 encoding of an MD5 digest of the | ||||
| concatenation the user password and salt. The base64 encoding of the | ||||
| salt is provided in the authInfo field. The salt MUST be at least | ||||
| 64-bits long. Implementations of this scheme MUST support salts up to | ||||
| 128-bit in length. | ||||
| Example: | ||||
| Given a user "joe" who's password is "mary" and a salt of "salt", | ||||
| the authInfo field would be the base64 encoding of "salt" and the | ||||
| authValue field would be the base64 encoding of the MD5 digest of | ||||
| "marysalt". | ||||
| A match against an asserted password and an attribute value of this | ||||
| scheme SHALL be true if and only if the MD5 digest of concatenation of | ||||
| the asserted value and the salt is equal to the MD5 digest contained | ||||
| in AuthValue. The match SHALL be undefined if the server is unable to | ||||
| complete the equality test for any reason. Otherwise the match SHALL | ||||
| be false. | ||||
| Values of this scheme SHOULD only be used to implement simple | ||||
| user/password authentication. | ||||
| 5.2. SHA1 scheme | ||||
| The SHA1 [SHA1] scheme name is "SHA1". | ||||
| The authValue is the base64 encoding of an SHA1 digest of the | ||||
| concatenation the user password and the salt. The base64 encoding of | ||||
| the salt is provided in the authInfo field. The salt MUST be at least | ||||
| 64-bits long. Implementations of this scheme MUST support salts up to | ||||
| 128-bit in length. | ||||
| Example: | ||||
| Given a user "joe" who's password is "mary" and a salt of "salt", | ||||
| the authInfo field would be the base64 encoding of "salt" and the | ||||
| authValue field would be the base64 encoding of the SHA1 digest of | ||||
| "marysalt". | ||||
| A match against an asserted password and an attribute value of this | ||||
| scheme SHALL be true if and only if the SHA1 digest of concatenation | ||||
| of the asserted value and the salt is equal to the SHA1 digest | ||||
| contained in AuthValue. The match SHALL be undefined if the server is | ||||
| unable to complete the equality test for any reason. Otherwise the | ||||
| match SHALL be false. | ||||
| Values of this scheme SHOULD only be used to implement simple | ||||
| user/password authentication. | ||||
| 6. Implementation Issues | ||||
| For implementations of this specification: | ||||
| Servers MAY restrict which schemes are used in conjunction with a | ||||
| particular authentication process but SHOULD use all values of | ||||
| selected schemes. If the asserted password matches any of the | ||||
| stored values, the asserted password SHOULD be considered valid. | ||||
| Servers MAY use other authentication storage mechanisms, such as | ||||
| userPassword or an external password store, in conjunction with | ||||
| authPassword to support the authentication process. | ||||
| Servers that support simple bind MUST support the SHA1 scheme and | ||||
| SHOULD support the MD5 scheme. | ||||
| Servers SHOULD not publish values of authPassword nor allow | ||||
| operations which expose authPassword or AuthPasswordMatch values to | ||||
| unless confidentiality protection is in place. | ||||
| Clients SHOULD not initiate operations which provide or request | ||||
| values of authPassword or make authPasswordMatch assertions unless | ||||
| confidentiality protection is in place. | ||||
| Clients SHOULD not assume that a successful AuthPasswordMatch, | ||||
| whether by compare or search, is sufficient to gain directory | ||||
| access. The bind operation MUST be used to authentication to the | ||||
| directory. | ||||
| 7. Security Considerations | ||||
| This document describes how authentication information may be stored | ||||
| in a directory. Authentication information MUST be adequately | ||||
| protected as unintended disclosure will allow attackers to gain | ||||
| immediate access to the directory as described by [RFC2829]. | ||||
| As flaws may be discovered in the hashing algorithm or with a | ||||
| particular implementation of the algorithm or may be subjected to | ||||
| dictionary or other attacks if exposed, values of AuthPassword SHOULD | ||||
| be protected as if they were clear text passwords. When values are | ||||
| transferred, privacy protections, such as IPSEC or TLS, SHOULD be in | ||||
| place. | ||||
| Clients SHOULD use strong authentication mechanisms [RFC2829]. | ||||
| AuthPasswordMatch matching rule allows applications to test the | ||||
| validity of a user password and, hence, may be used to mount an | ||||
| attack. Servers SHOULD take appropriate measures to protect the | ||||
| directory from such attacks. | ||||
| Some password schemes may require CPU intensive operations. Servers | ||||
| SHOULD take appropriate measures to protect against Denial of Service | ||||
| attacks. | ||||
| AuthPassword does not restrict an authentication identity to a single | ||||
| password. An attacker who gains write access to this attribute may | ||||
| store additional values without disabling the user's true password(s). | ||||
| Use of policy aware clients and servers is RECOMMENDED. | ||||
| The level of protection offered against various attacks differ from | ||||
| scheme to scheme. It is RECOMMENDED that servers support scheme | ||||
| selection as a configuration item. This allows for a scheme to be | ||||
| easily disabled if a significant security flaw is discovered. | ||||
| 8. Copyright | ||||
| Copyright 2001, The Internet Society. All Rights Reserved. | ||||
| This document and translations of it may be copied and furnished to | ||||
| others, and derivative works that comment on or otherwise explain it | ||||
| or assist in its implementation may be prepared, copied, published and | ||||
| distributed, in whole or in part, without restriction of any kind, | ||||
| provided that the above copyright notice and this paragraph are | ||||
| included on all such copies and derivative works. However, this | ||||
| document itself may not be modified in any way, such as by removing | ||||
| the copyright notice or references to the Internet Society or other | ||||
| Internet organizations, except as needed for the purpose of | ||||
| developing Internet standards in which case the procedures for | ||||
| copyrights defined in the Internet Standards process must be followed, | ||||
| or as required to translate it into languages other than English. | ||||
| The limited permissions granted above are perpetual and will not be | ||||
| revoked by the Internet Society or its successors or assigns. | ||||
| This document and the information contained herein is provided on an | ||||
| "AS IS" basis and THE AUTHORS, THE INTERNET SOCIETY, AND THE INTERNET | ||||
| ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, | ||||
| INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE | ||||
| INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | ||||
| WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
| 9. Acknowledgment | ||||
| This document borrows from a number of IETF documents and is based | ||||
| upon input from the IETF LDAPext working group. | ||||
| 10. Bibliography | ||||
| [RFC1321] R. Rivest, "The MD5 Message-Digest Algorithm", RFC 1321, | ||||
| April 1992 | ||||
| [RFC2219] S. Bradner, "Key words for use in RFCs to Indicate | ||||
| Requirement Levels", RFC 2119, March 1997. | ||||
| [RFC2222] J. Myers, "Simple Authentication and Security Layer (SASL)", | ||||
| RFC 2222, October 1997. | ||||
| [RFC2234] D. Crocker (editor), P. Overell, "Augmented BNF for Syntax | Title: LDAP Authentication Password Schema | |||
| Specifications: ABNF", RFC 2234, November 1997. | Author(s): K. Zeilenga | |||
| Status: Informational | ||||
| Date: May 2001 | ||||
| Mailbox: Kurt@OpenLDAP.org | ||||
| Pages: 9 | ||||
| Characters: 17116 | ||||
| Updates/Obsoletes/SeeAlso: None | ||||
| [RFC2251] M. Wahl, T. Howes, S. Kille, "Lightweight Directory Access | I-D Tag: draft-zeilenga-ldap-authpasswd-05.txt | |||
| Protocol (v3)", RFC 2251, December 1997. | ||||
| [RFC2252] M. Wahl, A. Coulbeck, T. Howes, S. Kille, "Lightweight | URL: ftp://ftp.rfc-editor.org/in-notes/rfc3112.txt | |||
| Directory Access Protocol (v3): Attribute Syntax | ||||
| Definitions", RFC 2252, December 1997. | ||||
| [RFC2256] M. Wahl, "A Summary of the X.500(96) User Schema for use | This document describes schema in support of user/password | |||
| with LDAPv3", RFC 2256, December 1997. | authentication in a LDAP (Lightweight Directory Access Protocol) | |||
| directory including the authPassword attribute type. This attribute | ||||
| type holds values derived from the user's password(s) (commonly using | ||||
| cryptographic strength one-way hash). authPassword is intended to | ||||
| used instead of userPassword. | ||||
| [RFC2307] L. Howard, "An Approach for Using LDAP as a Network | This memo provides information for the Internet community. It does | |||
| Information Service", RFC 2307, March 1998. (not normative) | not specify an Internet standard of any kind. Distribution of this | |||
| memo is unlimited. | ||||
| [RFC2829] M. Wahl, H. Alvestrand, J. Hodges, RL "Bob" Morgan, | This announcement is sent to the IETF list and the RFC-DIST list. | |||
| "Authentication Methods for LDAP", RFC 2829, June 2000. | Requests to be added to or deleted from the IETF distribution list | |||
| should be sent to IETF-REQUEST@IETF.ORG. Requests to be | ||||
| added to or deleted from the RFC-DIST distribution list should | ||||
| be sent to RFC-DIST-REQUEST@RFC-EDITOR.ORG. | ||||
| [PW-EXOP] K. Zeilenga, "LDAP Password Modify Extended Operation" | Details on obtaining RFCs via FTP or EMAIL may be obtained by sending | |||
| draft-zeilenga-ldap-passwd-exop-xx.txt, a work in progress. | an EMAIL message to rfc-info@RFC-EDITOR.ORG with the message body | |||
| help: ways_to_get_rfcs. For example: | ||||
| [SHA1] NIST, FIPS PUB 180-1: Secure Hash Standard, April 1995. | To: rfc-info@RFC-EDITOR.ORG | |||
| Subject: getting rfcs | ||||
| 11. Author's Address | help: ways_to_get_rfcs | |||
| Kurt D. Zeilenga | Requests for special distribution should be addressed to either the | |||
| OpenLDAP Foundation | author of the RFC in question, or to RFC-Manager@RFC-EDITOR.ORG. Unless | |||
| <Kurt@OpenLDAP.org> | specifically noted otherwise on the RFC itself, all RFCs are for | |||
| unlimited distribution.echo | ||||
| Submissions for Requests for Comments should be sent to | ||||
| RFC-EDITOR@RFC-EDITOR.ORG. Please consult RFC 2223, Instructions to RFC | ||||
| Authors, for further information. | ||||
| End of changes. 12 change blocks. | ||||
| 361 lines changed or deleted | 32 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||