Add.
[gsasl.git] / doc / specification / draft-siemborski-rfc1734bis-08.txt
blob123a05ccd743811d61c7538a168d822b1c8ae899
7 Network Working Group                                  Robert Siemborski
8 INTERNET-DRAFT                                              Google, Inc.
9 Intended Category: Proposed Standard                   Abhijit Menon-Sen
10 Obsoletes: RFC 1734                               Oryx Mail Systems GmbH
11 Updates: RFC 2449                                           January 2007
14                    POP3 SASL Authentication Mechanism
15                    draft-siemborski-rfc1734bis-08.txt
18 Status of this Memo
20     By submitting this Internet-Draft, each author represents that any
21     applicable patent or other IPR claims of which he or she is aware
22     have been or will be disclosed, and any of which he or she becomes
23     aware will be disclosed, in accordance with Section 6 of BCP 79.
25     Internet-Drafts are working documents of the Internet Engineering
26     Task Force (IETF), its areas, and its working groups.  Note that
27     other groups may also distribute working documents as Internet-
28     Drafts.
30     Internet-Drafts are draft documents valid for a maximum of six
31     months and may be updated, replaced, or obsoleted by other documents
32     at any time.  It is inappropriate to use Internet-Drafts as
33     reference material or to cite them other than as "work in progress."
35     The list of current Internet-Drafts can be accessed at
36     http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-
37     Draft Shadow Directories can be accessed at
38     http://www.ietf.org/shadow.html.
40     This Internet-Draft will expire in May 2007.
43 Abstract
45     This document defines a profile of the Simple Authentication and
46     Security Layer (SASL) for the Post Office Protocol (POP3).  This
47     extension allows a POP3 client to indicate an authentication
48     mechanism to the server, perform an authentication protocol
49     exchange, and optionally negotiate a security layer for subsequent
50     protocol interactions during this session.
52     This document seeks to consolidate the information related to POP3
53     AUTH into a single document.  To this end, this document obsoletes
54     RFC 1734, replacing it as a Proposed Standard and updates
58 Siemborski and Menon-Sen    Expires Jun 2007                    [Page 1]
60 POP3 SASL Authentication Mechanism                          January 2007
63     information contained in Section 6.3 of RFC 2449.
66 1.  Conventions Used in This Document
68     The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
69     "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
70     document are to be interpreted as described in [RFC2119].
72     In examples, "C:" and "S:" indicate lines sent by the client and
73     server respectively.
75     Formal syntax is defined by [RFC4234].
78 2.  Introduction
80     The POP3 (see [RFC1939]) AUTH command (see [RFC1734]) has suffered
81     several problems in its specification.  The first is that it was
82     very similar to a SASL framework defined by [RFC4422], but pre-dated
83     the initial SASL specification.  It was therefore missing some key
84     components, such as a way to list the available authentication
85     mechanisms.
87     Later, [RFC2449] attempted to remedy this situation by adding the
88     CAPA command and allowing an initial client response to the AUTH
89     command, however problems in the clarity of the specification of how
90     the initial client response was to be handled remained.
92     Together, this means creating a full POP3 AUTH implementaiton
93     requires an understanding of material in at least five different
94     documents (and [RFC3206] provides additional response codes that are
95     useful during authentication).
97     This document attempts to combine the information in [RFC1734] and
98     [RFC2449] to simplify this situation.  Additionally, it aims to
99     clarify and update the older specifications where appropriate.
102 3.  The SASL Capability
104     This section supersedes the definition of the SASL Capability in
105     section 6.3 of [RFC2449].
107     CAPA tag:
108         SASL
114 Siemborski and Menon-Sen    Expires Jun 2007                    [Page 2]
116 POP3 SASL Authentication Mechanism                          January 2007
119     Arguments:
120         Supported SASL Mechanisms
122     Added commands:
123         AUTH
125     Standard Commands Affected
126         None
128     Announced states / possible differences:
129         both / no
131     Commands valid in states:
132         AUTHORIZATION
134     Specification Reference:
135         This Document, [RFC4422]
137     Discussion
138         The SASL capability permits the use of the AUTH command (as
139         defined in section 4 of this document) to begin a SASL
140         negotiation (as defined in [RFC4422]).  The argument to the SASL
141         capability is a space-separated list of SASL mechanisms which
142         are supported.
144         If a server either does not support the CAPA command or does not
145         advertise the SASL capability, clients SHOULD NOT attempt the
146         AUTH command.  If a client does attempt the AUTH command in such
147         a situation, it MUST NOT supply the client initial response
148         parameter (for backwards compatibility with [RFC1734]).
150         Note that the list of available mechanisms MAY change after a
151         successful STLS command (see [RFC2595]).  However, as required
152         by [RFC2449] implementations MUST continue to include the SASL
153         capability even after a successful AUTH command has been
154         completed (even though no further AUTH commands may be issued).
156     Example
157         S: +OK pop.example.com BlurdyBlurp POP3 server ready
158         C: CAPA
159         S: +OK List of capabilities follows
160         S: SASL DIGEST-MD5 GSSAPI ANONYMOUS
161         S: STLS
162         S: IMPLEMENTATION BlurdyBlurp POP3 server
163         S: .
170 Siemborski and Menon-Sen    Expires Jun 2007                    [Page 3]
172 POP3 SASL Authentication Mechanism                          January 2007
175 4.  The AUTH Command
177     AUTH mechanism [initial-response]
179       Arguments:
181           mechanism: A string identifying a SASL authentication
182           mechanism.
184           initial-response: An optional initial client response, as
185           defined in section 3 of [RFC4422].  If present, this response
186           MUST be encoded as Base64 (specified in Section 4 of
187           [RFC4648]) or consist only of the single character "=", which
188           represents an empty initial response.
190       Restrictions:
192           After an AUTH command has been successfully completed, no more
193           AUTH commands may be issued in the same session.  After a
194           successful AUTH command completes, a server MUST reject any
195           further AUTH commands with an -ERR reply.
197           The AUTH command may only be given during the AUTHORIZATION
198           state.
200       Discussion:
202           The AUTH command initiates a SASL authentication exchange
203           between the client and the server.  The client identifies the
204           SASL mechanism to use with the first parameter of the AUTH
205           command.  If the server supports the requested authentication
206           mechanism, it performs the SASL exchange to authenticate the
207           user.  Optionally, it also negotiates a security layer for
208           subsequent protocol interactions during this session.  If the
209           requested authentication mechanism is not supported, the
210           server rejects the AUTH command with an -ERR reply.
212           The authentication protocol exchange consists of a series of
213           server challenges and client responses that are specific to
214           the chosen SASL mechanism.
216           A server challenge is sent as a line consisting of a "+"
217           character followed by a single space and a string encoded
218           using Base64 as specified in Section 4 of [RFC4648].  This
219           line MUST NOT contain any text other than the BASE64 encoded
220           challenge.
222           A client response consists of a line containing a string
226 Siemborski and Menon-Sen    Expires Jun 2007                    [Page 4]
228 POP3 SASL Authentication Mechanism                          January 2007
231           encoded as Base64.  If the client wishes to cancel the
232           authentication exchange, it issues a line with a single "*".
233           If the server receives such a response, it MUST reject the
234           AUTH command by sending an -ERR reply.
236           The optional initial response argument to the AUTH command is
237           used to save a round trip when using authentication mechanisms
238           that support an initial client response.  If the initial
239           response argument is omitted and the chosen mechanism requires
240           an initial client response, the server MUST proceed as defined
241           in section 3 of [RFC4422].  In POP3, a server challenge with
242           no data is defined as line with only a "+" followed by a
243           single space.  It MUST NOT contain any other data.
245           For the purposes of the initial client response, the line
246           length limitation defined in [RFC2449] still applies.  If a
247           client initial send would cause the AUTH command to exceed
248           this length, the client MUST NOT use the initial response
249           parameter (and must proceed instead by sending its initial
250           response after an empty challenge from the server, as in
251           section 3 of [RFC4422]).
253           If the client needs to send a zero-length initial response,
254           the client MUST transmit the response as a single equals sign
255           ("=").  This indicates that the response is present, but
256           contains no data.
258           If the client uses an initial-response argument to the AUTH
259           command with a SASL mechanism that does not support an initial
260           client send, the server MUST reject the AUTH command with an
261           -ERR reply.
263           If the server cannot Base64 decode a client response, it MUST
264           reject the AUTH command with an -ERR reply.  If the client
265           cannot Base64 decode any of the server's challenges, it MUST
266           cancel the authentication using the "*" response.  In
267           particular, servers and clients MUST reject (and not ignore)
268           any character not explicitly allowed by the Base64 alphabet,
269           and MUST reject any sequence of Base64 characters that
270           contains the pad character ('=') anywhere other than the end
271           of the string (e.g. "=AAA" and "AAA=BBB" are not allowed).
273           Note that these Base64 strings (excepting the initial client
274           response) may be of arbitrarily length.  Clients and servers
275           MUST be able to handle the maximum encoded size of challenges
276           and responses generated by their supported authentication
277           mechanisms.  This requirement is independent of any line
278           length limitations the client or server may have in other
282 Siemborski and Menon-Sen    Expires Jun 2007                    [Page 5]
284 POP3 SASL Authentication Mechanism                          January 2007
287           parts of its protocol implementation.
289           If the server is unable to authenticate the client, it MUST
290           reject the AUTH command with an -ERR reply.  Should the client
291           successfully complete the exchange, the server issues a +OK
292           reply.  Additionally, upon success, the POP3 session enters
293           the TRANSACTION state.
295           The authorization identity generated by the SASL exchange is a
296           simple username, and SHOULD use the SASLprep profile (see
297           [RFC4013]) of the StringPrep algorithm (see [RFC3454]) to
298           prepare these names for matching.  If preparation of the
299           authorization identity fails or results in an empty string
300           (unless it was transmitted as the empty string), the server
301           MUST fail the authentication.
303           If a security layer is negotiated during the SASL exchange, it
304           takes effect for the client on the octet immediately following
305           the CRLF that concludes the last response generated by the
306           client.  For the server, it takes effect immediately following
307           the CRLF of its success reply.
309           When a security layer takes effect, the server MUST discard
310           any knowledge previously obtained from the client, which was
311           not obtained from the SASL negotiation itself.  Likewise, the
312           client MUST discard any knowledge obtained from the server,
313           such as the list of available POP3 service extensions.
315           When both TLS (see [RFC4346]) and SASL security layers are in
316           effect, the TLS encoding MUST be applied after the SASL
317           encoding when sending data. (According to [RFC2595], STLS can
318           only be issued before AUTH in any case.)
320           Note that POP3 does not allow for additional data to be sent
321           with a message indicating a successful outcome (see section
322           3.6 of [RFC4422]).
324           The service name specified by this protocol's profile of SASL
325           is "pop".
327           If an AUTH command fails, the client may try another
328           authentication mechanism or present different credentials by
329           issuing another AUTH command (or by using one of the other
330           POP3 authentication mechanisms).  Likewise, the server MUST
331           behave as if the client had not issued the AUTH command.
333           To ensure interoperability, client and server implementations
334           of this extension MUST implement the [DIGEST-MD5] SASL
338 Siemborski and Menon-Sen    Expires Jun 2007                    [Page 6]
340 POP3 SASL Authentication Mechanism                          January 2007
343           mechanism.
346 5.  Formal Syntax
348     The following syntax specification uses the Augmented Backus-Naur
349     Form notation as specified in [RFC4234]. The rules CRLF, ALPHA and
350     DIGIT are imported from [RFC4234]. The sasl-mech rule is from
351     [RFC4422].
353     Except as noted otherwise, all alphabetic characters are case-
354     insensitive. The use of upper or lower case characters to define
355     token strings is for editorial clarity only.  Implementations MUST
356     accept these strings in a case-insensitive fashion.
358       auth-command    = "AUTH" SP sasl-mech [SP (base64 / "=")] *(CRLF
359                         [base64]) CRLF
361       auth-resp       = ("*" / base64) CRLF
363       base64          = base64-terminal /
364                         ( 1*(4base64-CHAR) [base64-terminal] )
366       base64-char     = ALPHA / DIGIT / "+" / "/"
367                         ;; Case-sensitive
369       base64-terminal = (2base64-char "==") / (3base64-char "=")
371       continue-req    = "+" SP [base64] CRLF
373     Additionally, the ABNF specified in [RFC2449] is updated as follows:
375       challenge      /= continue-req
378 6.  Examples
380     Here is an example of a client attempting AUTH PLAIN (see [RFC4616])
381     under TLS and making use of the initial client response:
383         S: +OK pop.example.com BlurdyBlurp POP3 server ready
384         C: CAPA
385         S: +OK List of capabilities follows
386         S: SASL DIGEST-MD5 GSSAPI ANONYMOUS
387         S: STLS
388         S: IMPLEMENTATION BlurdyBlurp POP3 server
389         S: .
390         C: STLS
394 Siemborski and Menon-Sen    Expires Jun 2007                    [Page 7]
396 POP3 SASL Authentication Mechanism                          January 2007
399         S: +OK Begin TLS negotiation now
400             (TLS negotiation proceeds, further commands protected by TLS
401             layer)
402         C: CAPA
403         S: +OK List of capabilities follows
404         S: SASL PLAIN DIGEST-MD5 GSSAPI ANONYMOUS
405         S: IMPLEMENTATION BlurdyBlurp POP3 server
406         S: .
407         C: AUTH PLAIN dGVzdAB0ZXN0AHRlc3Q=
408         S: +OK Maildrop locked and ready
410     Here is another client that is attempting AUTH PLAIN under a TLS
411     layer, this time without the initial response.  Parts of the
412     negotiation before the TLS layer was established have been omitted:
414             (TLS negotiation proceeds, further commands protected by TLS
415             layer)
416         C: CAPA
417         S: +OK List of capabilities follows
418         S: SASL PLAIN DIGEST-MD5 GSSAPI ANONYMOUS
419         S: IMPLEMENTATION BlurdyBlurp POP3 server
420         S: .
421         C: AUTH PLAIN
422             (note that there is a space following the '+' on the
423             following line)
424         S: +
425         C: dGVzdAB0ZXN0AHRlc3Q=
426         S: +OK Maildrop locked and ready
428     Here is an example using a mechanism in which the exchange begins
429     with a server challenge (the long lines are broken for editorial
430     clarity only):
432         S: +OK pop.example.com BlurdyBlurp POP3 server ready
433         C: CAPA
434         S: +OK List of capabilities follows
435         S: SASL DIGEST-MD5 GSSAPI ANONYMOUS
436         S: STLS
437         S: IMPLEMENTATION BlurdyBlurp POP3 server
438         S: .
439         C: AUTH DIGEST-MD5
440         S: + cmVhbG09ImVsd29vZC5pbm5vc29mdC5jb20iLG5vbmNlPSJPQTZNRzl0
441              RVFHbTJoaCIscW9wPSJhdXRoIixhbGdvcml0aG09bWQ1LXNlc3MsY2hh
442              cnNldD11dGYtOA==
443         C: Y2hhcnNldD11dGYtOCx1c2VybmFtZT0iY2hyaXMiLHJlYWxtPSJlbHdvb2
444            QuaW5ub3NvZnQuY29tIixub25jZT0iT0E2TUc5dEVRR20yaGgiLG5jPTAw
445            MDAwMDAxLGNub25jZT0iT0E2TUhYaDZWcVRyUmsiLGRpZ2VzdC11cmk9Im
446            ltYXAvZWx3b29kLmlubm9zb2Z0LmNvbSIscmVzcG9uc2U9ZDM4OGRhZDkw
450 Siemborski and Menon-Sen    Expires Jun 2007                    [Page 8]
452 POP3 SASL Authentication Mechanism                          January 2007
455            ZDRiYmQ3NjBhMTUyMzIxZjIxNDNhZjcscW9wPWF1dGg=
456         S: + cnNwYXV0aD1lYTQwZjYwMzM1YzQyN2I1NTI3Yjg0ZGJhYmNkZmZmZA==
457         C:
458         S: +OK Maildrop locked and ready
461 7.  Security Considerations
463     Security issues are discussed throughout this document.
466 8.  IANA Considerations
468     The IANA is requested to refer to this RFC instead of [RFC1734] in
469     http://www.iana.org/assignments/pop3-extension-mechanism (the POP3
470     extension registry).
473 9.  Acknowledgments
475     The authors would like to acknowledge the contributions of John
476     Myers, Randall Gellens, Chris Newman, Laurence Lundblade, and other
477     contributors to RFC 1734 and RFC 2554, on which this document draws
478     heavily.
480     The authors would also like to thank Ken Murchison, Randall Gellens,
481     Alexey Melnikov, Mark Crispin, and Arnt Gulbrandsen for the time
482     they devoted to reviewing early drafts of this document.
485 10.  Changes From RFC 1734, RFC 2449.
487     1. The SASL-based semantics defined in RFC 2449 are now normative
488         for the AUTH extension.
490     2. Clarifications and examples of the proper behavior of initial
491         client response handling.
493     3. Minimum requirement of support for DIGEST-MD5.
495     4. Clarify ordering of TLS and SASL security layers.
497     5. Update references to newer versions of various specifications.
499     6. Clarify that the mechanism list can change.
501     7. Add the use of the SASLprep profile for preparing authorization
502            identities.
506 Siemborski and Menon-Sen    Expires Jun 2007                    [Page 9]
508 POP3 SASL Authentication Mechanism                          January 2007
511     8. General other editorial clarifications.
513     9. Consolidation of much applicable information into a single
514         document.
516     10. CR is no longer (incorrectly) defined here.
518     11. Include M-T-I DIGEST-MD5 in the SASL capability response.
520     12. Explicitly mention that "=" means a zero-length initial
521         response.
523     13. Change MUST to SHOULD use SASLprep, because nobody does.
525     14. Clarify that the TLS encoding should be applied after any SASL
526         one.
528     15. Note that POP3 doesn't allow additional data to be sent with
529         +OK.
531     16. Change "_" to "-" in the ABNF, and use the sasl-mech rule
532         instead of AUTH_CHAR.
534     17. Change the KERBEROS_V4 example to DIGEST-MD5 for now; remove
535         KERBEROS_V4.
537     18. Reword the reference to [RFC3206] to make it clearer that it is
538         not mandatory.
540     19. Define the initial-response by reference to SASL.
542     20. Fix the dangling reference to 2222/5.1.
545 11. Normative References
547     [RFC1939]  Myers, Rose, "Post Office Protocol - Version 3", STD 53,
548                RFC 1939, May 1996.
550     [RFC2119]  Bradner, "Key words for use in RFCs to Indicate
551                Requirement Levels", BCP 14, RFC 2119, March 1997.
553     [RFC2449]  Gellens, Newman, Lundblade, "POP3 Extension Mechanism",
554                RFC 2449, November 1998.
556     [RFC2595]  Newman, "Using TLS with IMAP, POP3, and ACAP", RFC 2595,
557                June 1999.
562 Siemborski and Menon-Sen    Expires Jun 2007                   [Page 10]
564 POP3 SASL Authentication Mechanism                          January 2007
567     [RFC3454] Hoffman, Blanchet, "Preparation of Internationalized
568                Strings ("stringprep")", RFC 3454, December 2002.
570     [RFC4013]  Zeilenga, "SASLprep: Stringprep Profile for User Names
571                and Passwords", RFC 4013, OpenLDAP Foundation, February
572                2005.
574     [RFC4234]  Crocker, Overell, "Augmented BNF for Syntax
575                Specifications: ABNF", RFC 4234, Brandenburg
576                Internetworking, Demon Internet Ltd, October 2005.
578     [RFC4422]  Melnikov, Zeilenga, "Simple Authentication and Security
579                Layer (SASL)", RFC 4422, June 2006.
581     [RFC4648]  Josefsson, "The Base16, Base32, and Base64 Data
582                Encodings", RFC 4648, October 2003.
584     [DIGEST-MD5] Melnikov, "Using Digest Authentication as a SASL
585                Mechanism", draft-ietf-sasl-rfc2831bis-11.txt, Isode
586                Ltd., November 2006
589 12. Informative References
591     [RFC1734]  Myers, "POP3 AUTHentication Command", RFC 1734, January
592                1994.
594     [RFC3206]  Gellens, "The SYS and AUTH POP Response Codes", RFC 3206,
595                February 2002.
597     [RFC4346]  Dierks, Rescorla, "The Transport Layer Security (TLS)
598                Protocol, Version 1.1", RFC 4346, April 2006.
600     [RFC4616]  Zeilenga, "The PLAIN Simple Authentication and Security
601                Layer (SASL) Mechanism", RFC 4616, OpenLDAP Foundation,
602                August 2006.
618 Siemborski and Menon-Sen    Expires Jun 2007                   [Page 11]
620 POP3 SASL Authentication Mechanism                          January 2007
623 13. Authors' Addresses
625     Robert Siemborski
626     Google, Inc.
627     1600 Ampitheatre Parkway
628     Mountain View, CA 94043
630     Phone: +1 650 623 6925
631     Email: robsiemb@google.com
634     Abhijit Menon-Sen
635     Oryx Mail Systems GmbH
637     Email: ams@oryx.com
674 Siemborski and Menon-Sen    Expires Jun 2007                   [Page 12]
676 POP3 SASL Authentication Mechanism                          January 2007
679 Protocol Actions
681     [RFC Editor: Remove this section before publication]
683     This document obsoletes RFC 1734 and replaces it as a Proposed
684     Standard.  By moving RFC 1734 to Historic, RFC 1731 can also be
685     moved to Historic (as RFC 1734 was the last document to have a
686     normative reference).
688     It also updates information contained in Section 6.3 of RFC 2449.
730 Siemborski and Menon-Sen    Expires Jun 2007                   [Page 13]
732 POP3 SASL Authentication Mechanism                          January 2007
735 Intellectual Property Statement
737     The IETF takes no position regarding the validity or scope of any
738     Intellectual Property Rights or other rights that might be claimed
739     to pertain to the implementation or use of the technology described
740     in this document or the extent to which any license under such
741     rights might or might not be available; nor does it represent that
742     it has made any independent effort to identify any such rights.
743     Information on the procedures with respect to rights in RFC
744     documents can be found in BCP 78 and BCP 79.
746     Copies of IPR disclosures made to the IETF Secretariat and any
747     assurances of licenses to be made available, or the result of an
748     attempt made to obtain a general license or permission for the use
749     of such proprietary rights by implementers or users of this
750     specification can be obtained from the IETF on-line IPR repository
751     at http://www.ietf.org/ipr.
753     The IETF invites any interested party to bring to its attention any
754     copyrights, patents or patent applications, or other proprietary
755     rights that may cover technology that may be required to implement
756     this standard.  Please address the information to the IETF at ietf-
757     ipr@ietf.org.
760 Full Copyright Statement
762     Copyright (C) The Internet Society (2007).  This document is subject
763     to the rights, licenses and restrictions contained in BCP 78, and
764     except as set forth therein, the authors retain all their rights.
766     This document and the information contained herein are provided on
767     an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE
768     REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE
769     INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR
770     IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
771     THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
772     WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
775 Acknowledgment
777     Funding for the RFC Editor function is currently provided by the
778     Internet Society.
786 Siemborski and Menon-Sen    Expires Jun 2007                   [Page 14]