Source from upstream; imap-2007f.tar.gz
MD5 2126fd125ea26b73b20f01fcd5940369
This commit is contained in:
395
docs/rfc/rfc4959.txt
Normal file
395
docs/rfc/rfc4959.txt
Normal file
@@ -0,0 +1,395 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Network Working Group R. Siemborski
|
||||
Request for Comments: 4959 Google, Inc.
|
||||
Category: Standards Track A. Gulbrandsen
|
||||
Oryx Mail Systems GmbH
|
||||
September 2007
|
||||
|
||||
|
||||
IMAP Extension for Simple Authentication and Security Layer (SASL)
|
||||
Initial Client Response
|
||||
|
||||
Status of This Memo
|
||||
|
||||
This document specifies an Internet standards track protocol for the
|
||||
Internet community, and requests discussion and suggestions for
|
||||
improvements. Please refer to the current edition of the "Internet
|
||||
Official Protocol Standards" (STD 1) for the standardization state
|
||||
and status of this protocol. Distribution of this memo is unlimited.
|
||||
|
||||
Abstract
|
||||
|
||||
To date, the Internet Message Access Protocol (IMAP) has used a
|
||||
Simple Authentication and Security Layer (SASL) profile which always
|
||||
required at least one complete round trip for an authentication, as
|
||||
it did not support an initial client response argument. This
|
||||
additional round trip at the beginning of the session is undesirable,
|
||||
especially when round-trip costs are high.
|
||||
|
||||
This document defines an extension to IMAP which allows clients and
|
||||
servers to avoid this round trip by allowing an initial client
|
||||
response argument to the IMAP AUTHENTICATE command.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Siemborski & Gulbrandsen Standards Track [Page 1]
|
||||
|
||||
RFC 4959 IMAP Ext for SASL Initial Client Response September 2007
|
||||
|
||||
|
||||
1. Introduction
|
||||
|
||||
The SASL initial client response extension is present in any IMAP
|
||||
[RFC3501] server implementation which returns "SASL-IR" as one of the
|
||||
supported capabilities in its CAPABILITY response.
|
||||
|
||||
Servers which support this extension will accept an optional initial
|
||||
client response with the AUTHENTICATE command for any SASL [RFC4422]
|
||||
mechanisms which support it.
|
||||
|
||||
2. Conventions Used in This Document
|
||||
|
||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
|
||||
document are to be interpreted as described in [RFC2119].
|
||||
|
||||
In examples, "C:" and "S:" indicate lines sent by the client and
|
||||
server, respectively.
|
||||
|
||||
Formal syntax is defined by [RFC4234] as extended by [RFC3501].
|
||||
|
||||
3. IMAP Changes to the IMAP AUTHENTICATE Command
|
||||
|
||||
This extension adds an optional second argument to the AUTHENTICATE
|
||||
command that is defined in Section 6.2.2 of [RFC3501]. If this
|
||||
second argument is present, it represents the contents of the
|
||||
"initial client response" defined in Section 5.1 of [RFC4422].
|
||||
|
||||
As with any other client response, this initial client response MUST
|
||||
be encoded as defined in Section 4 of [RFC4648]. It also MUST be
|
||||
transmitted outside of a quoted string or literal. To send a zero-
|
||||
length initial response, the client MUST send a single pad character
|
||||
("="). This indicates that the response is present, but is a zero-
|
||||
length string.
|
||||
|
||||
When decoding the BASE64 [RFC4648] data in the initial client
|
||||
response, decoding errors MUST be treated as IMAP [RFC3501] would
|
||||
handle them in any normal SASL client response. In particular, the
|
||||
server should check for any characters not explicitly allowed by the
|
||||
BASE64 alphabet, as well as any sequence of BASE64 characters that
|
||||
contains the pad character ('=') anywhere other than the end of the
|
||||
string (e.g., "=AAA" and "AAA=BBB" are not allowed).
|
||||
|
||||
If the client uses an initial response with a SASL mechanism that
|
||||
does not support an initial response, the server MUST reject the
|
||||
command with a tagged BAD response.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Siemborski & Gulbrandsen Standards Track [Page 2]
|
||||
|
||||
RFC 4959 IMAP Ext for SASL Initial Client Response September 2007
|
||||
|
||||
|
||||
Note: support and use of the initial client response is optional for
|
||||
both clients and servers. Servers that implement this extension MUST
|
||||
support clients that omit the initial client response, and clients
|
||||
that implement this extension MUST NOT send an initial client
|
||||
response to servers that do not advertise the SASL-IR capability. In
|
||||
such a situation, clients MUST fall back to an IMAP [RFC3501]
|
||||
compatible mode.
|
||||
|
||||
If either the client or the server do not support the SASL-IR
|
||||
capability, a mechanism which uses an initial client response is
|
||||
negotiated using the challenge/response exchange described in
|
||||
[RFC3501], with an initial zero-length server challenge.
|
||||
|
||||
4. Examples
|
||||
|
||||
The following is an example authentication using the PLAIN (see
|
||||
[RFC4616]) SASL mechanism (under a TLS protection layer, see
|
||||
[RFC4346]) and an initial client response:
|
||||
|
||||
... client connects to server and negotiates a TLS
|
||||
protection layer ...
|
||||
C: C01 CAPABILITY
|
||||
S: * CAPABILITY IMAP4rev1 SASL-IR AUTH=PLAIN
|
||||
S: C01 OK Completed
|
||||
C: A01 AUTHENTICATE PLAIN dGVzdAB0ZXN0AHRlc3Q=
|
||||
S: A01 OK Success (tls protection)
|
||||
|
||||
Note that even when a server supports this extension, the following
|
||||
negotiation (which does not use the initial response) is still valid
|
||||
and MUST be supported by the server:
|
||||
|
||||
... client connects to server and negotiates a TLS
|
||||
protection layer ...
|
||||
C: C01 CAPABILITY
|
||||
S: * CAPABILITY IMAP4rev1 SASL-IR AUTH=PLAIN
|
||||
S: C01 OK Completed
|
||||
C: A01 AUTHENTICATE PLAIN
|
||||
(note that there is a space following the "+" in the
|
||||
following line)
|
||||
S: +
|
||||
C: dGVzdAB0ZXN0AHRlc3Q=
|
||||
S: A01 OK Success (tls protection)
|
||||
|
||||
The following is an example authentication using the SASL EXTERNAL
|
||||
mechanism (defined in [RFC4422]) under a TLS protection layer (see
|
||||
[RFC4346]) and an empty initial client response:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Siemborski & Gulbrandsen Standards Track [Page 3]
|
||||
|
||||
RFC 4959 IMAP Ext for SASL Initial Client Response September 2007
|
||||
|
||||
|
||||
... client connects to server and negotiates a TLS
|
||||
protection layer ...
|
||||
C: C01 CAPABILITY
|
||||
S: * CAPABILITY IMAP4rev1 SASL-IR AUTH=PLAIN AUTH=EXTERNAL
|
||||
S: C01 OK Completed
|
||||
C: A01 AUTHENTICATE EXTERNAL =
|
||||
S: A01 OK Success (tls protection)
|
||||
|
||||
This is in contrast with the handling of such a situation when an
|
||||
initial response is omitted:
|
||||
|
||||
... client connects to server and negotiates a TLS protection
|
||||
layer ...
|
||||
C: C01 CAPABILITY
|
||||
S: * CAPABILITY IMAP4rev1 SASL-IR AUTH=PLAIN AUTH=EXTERNAL
|
||||
S: C01 OK Completed
|
||||
C: A01 AUTHENTICATE EXTERNAL
|
||||
(note that there is a space following the "+" in the
|
||||
following line)
|
||||
S: +
|
||||
C:
|
||||
S: A01 OK Success (tls protection)
|
||||
|
||||
5. IANA Considerations
|
||||
|
||||
The IANA has added SASL-IR to the IMAP4 Capabilities Registry.
|
||||
|
||||
6. Security Considerations
|
||||
|
||||
The extension defined in this document is subject to many of the
|
||||
Security Considerations defined in [RFC3501] and [RFC4422].
|
||||
|
||||
Server implementations MUST treat the omission of an initial client
|
||||
response from the AUTHENTICATE command as defined by [RFC3501] (as if
|
||||
this extension did not exist).
|
||||
|
||||
Although [RFC3501] has no express line length limitations, some
|
||||
implementations choose to enforce them anyway. Such implementations
|
||||
MUST be aware that the addition of the initial response parameter to
|
||||
AUTHENTICATE may increase the maximum line length that IMAP parsers
|
||||
may expect to support. Server implementations MUST be able to
|
||||
receive the largest possible initial client response that their
|
||||
supported mechanisms might receive.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Siemborski & Gulbrandsen Standards Track [Page 4]
|
||||
|
||||
RFC 4959 IMAP Ext for SASL Initial Client Response September 2007
|
||||
|
||||
|
||||
7. Formal Syntax
|
||||
|
||||
The following syntax specification uses the Augmented Backus-Naur
|
||||
Form [RFC4234] notation. [RFC3501] defines the non-terminals
|
||||
capability, auth-type, and base64.
|
||||
|
||||
capability =/ "SASL-IR"
|
||||
|
||||
authenticate = "AUTHENTICATE" SP auth-type [SP (base64 / "=")]
|
||||
*(CRLF base64)
|
||||
;;redefine AUTHENTICATE from [RFC3501]
|
||||
|
||||
8. Acknowledgments
|
||||
|
||||
The authors would like to acknowledge the contributions of Ken
|
||||
Murchison and Mark Crispin, along with the rest of the IMAPEXT
|
||||
Working Group for their assistance in reviewing this document.
|
||||
|
||||
Alexey Melnikov and Cyrus Daboo also had some early discussions about
|
||||
this extension.
|
||||
|
||||
9. References
|
||||
|
||||
9.1. Normative References
|
||||
|
||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
||||
Requirement Levels", BCP 14, RFC 2119, March 1997.
|
||||
|
||||
[RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION
|
||||
4rev1", RFC 3501, March 2003.
|
||||
|
||||
[RFC4234] Crocker, D. and P. Overell, "Augmented BNF for Syntax
|
||||
Specifications: ABNF", RFC 4234, October 2005.
|
||||
|
||||
[RFC4422] Melnikov, A. and K. Zeilenga, "Simple Authentication and
|
||||
Security Layer (SASL)", RFC 4422, June 2006.
|
||||
|
||||
[RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data
|
||||
Encodings", RFC 4648, October 2006.
|
||||
|
||||
9.2. Informative References
|
||||
|
||||
[RFC4616] Zeilenga, K., "The PLAIN Simple Authentication and
|
||||
Security Layer (SASL) Mechanism", RFC 4616, August 2006.
|
||||
|
||||
[RFC4346] Dierks, T. and E. Rescorla, "The Transport Layer Security
|
||||
(TLS) Protocol Version 1.1", RFC 4346, April 2006.
|
||||
|
||||
|
||||
|
||||
|
||||
Siemborski & Gulbrandsen Standards Track [Page 5]
|
||||
|
||||
RFC 4959 IMAP Ext for SASL Initial Client Response September 2007
|
||||
|
||||
|
||||
Authors' Addresses
|
||||
|
||||
Robert Siemborski
|
||||
Google, Inc.
|
||||
1600 Ampitheatre Parkway
|
||||
Mountain View, CA 94043
|
||||
|
||||
Phone: +1 650 623 6925
|
||||
EMail: robsiemb@google.com
|
||||
|
||||
|
||||
Arnt Gulbrandsen
|
||||
Oryx Mail Systems GmbH
|
||||
Schweppermannstr. 8
|
||||
D-81671 Muenchen
|
||||
Germany
|
||||
|
||||
EMail: arnt@oryx.com
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Siemborski & Gulbrandsen Standards Track [Page 6]
|
||||
|
||||
RFC 4959 IMAP Ext for SASL Initial Client Response September 2007
|
||||
|
||||
|
||||
Full Copyright Statement
|
||||
|
||||
Copyright (C) The IETF Trust (2007).
|
||||
|
||||
This document is subject to the rights, licenses and restrictions
|
||||
contained in BCP 78, and except as set forth therein, the authors
|
||||
retain all their rights.
|
||||
|
||||
This document and the information contained herein are provided on an
|
||||
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
|
||||
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
|
||||
THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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.
|
||||
|
||||
Intellectual Property
|
||||
|
||||
The IETF takes no position regarding the validity or scope of any
|
||||
Intellectual Property Rights or other rights that might be claimed to
|
||||
pertain to the implementation or use of the technology described in
|
||||
this document or the extent to which any license under such rights
|
||||
might or might not be available; nor does it represent that it has
|
||||
made any independent effort to identify any such rights. Information
|
||||
on the procedures with respect to rights in RFC documents can be
|
||||
found in BCP 78 and BCP 79.
|
||||
|
||||
Copies of IPR disclosures made to the IETF Secretariat and any
|
||||
assurances of licenses to be made available, or the result of an
|
||||
attempt made to obtain a general license or permission for the use of
|
||||
such proprietary rights by implementers or users of this
|
||||
specification can be obtained from the IETF on-line IPR repository at
|
||||
http://www.ietf.org/ipr.
|
||||
|
||||
The IETF invites any interested party to bring to its attention any
|
||||
copyrights, patents or patent applications, or other proprietary
|
||||
rights that may cover technology that may be required to implement
|
||||
this standard. Please address the information to the IETF at
|
||||
ietf-ipr@ietf.org.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Siemborski & Gulbrandsen Standards Track [Page 7]
|
||||
|
||||
Reference in New Issue
Block a user