2 Network Working Group A. Melnikov
4 Document: draft-ietf-sasl-rfc2222bis-09.txt October 2004
5 Obsoletes: RFC 2222 Expires in six months
8 Simple Authentication and Security Layer (SASL)
12 By submitting this Internet-Draft, I certify that any applicable
13 patent or other IPR claims of which I am aware have been disclosed,
14 and any of which I become aware will be disclosed, in accordance with
17 Internet Drafts are working documents of the Internet Engineering
18 Task Force (IETF), its Areas, and its Working Groups. Note that
19 other groups may also distribute working documents as Internet
20 Drafts. Internet Drafts are draft documents valid for a maximum of
21 six months. Internet Drafts may be updated, replaced, or obsoleted
22 by other documents at any time. It is not appropriate to use
23 Internet Drafts as reference material or to cite them other than as
26 The list of current Internet-Drafts can be accessed at
27 http://www.ietf.org/ietf/1id-abstracts.txt
29 The list of Internet-Draft Shadow Directories can be accessed at
30 http://www.ietf.org/shadow.html.
32 A revised version of this draft document will be submitted to the RFC
33 editor as a Standards Track RFC for the Internet Community.
34 Discussion and suggestions for improvement are requested.
35 Distribution of this draft is unlimited.
37 When published as an RFC this document will obsolete RFC 2222.
53 A. Melnikov FORMFEED[Page i]
59 Internet DRAFT SASL 25 October 2004
64 The Simple Authentication and Security Layer (SASL) is a framework
65 for providing authentication and data security services in
66 connection-oriented protocols via replaceable mechanisms. It provides
67 a structured interface between protocols and mechanisms. The
68 resulting framework allows new protocols to reuse existing mechanisms
69 and allows old protocols to make use of new mechanisms. The
70 framework also provides a protocol for securing subsequent protocol
71 exchanges within a data security layer.
73 This document describes how a SASL mechanism is structured, describes
74 how protocols add support for SASL, and defines the protocol for
75 carrying a data security layer over a connection. Additionally, this
76 document defines one SASL mechanism, the EXTERNAL mechanism.
79 1. Conventions used in this document
81 In examples, "C:" and "S:" indicate lines sent by the client and
84 The key words "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", and "MAY"
85 in this document are to be interpreted as defined in "Key words for
86 use in RFCs to Indicate Requirement Levels" [KEYWORDS].
88 Character names in this document use the notation for code points and
89 names from the Unicode Standard [Unicode]. For example, the letter
90 "a" may be represented as either <U+0061> or <LATIN SMALL LETTER A>.
92 This document uses terms "integrity protection" and "confidentiality
93 protection". The former refers to a security layer (see Section
94 "Introduction" below for the definition) designed to provide "data
95 integrity service" as defined in [Sec-Glossary]. Confidentiality
96 protection is a security layer that provides "data confidentiality
97 service" as defined in [Sec-Glossary]. The term "confidentiality
98 protection" implies "integrity protection". Security layers may offer
99 other kinds of security services.
104 The Simple Authentication and Security Layer (SASL) is a framework
105 for providing authentication and data security services in
106 connection-oriented protocols via replaceable mechanisms. SASL
107 provides a structured interface between protocols and mechanisms.
108 SASL also provides a protocol for securing subsequent protocol
109 exchanges within a data security layer.
113 A. Melnikov FORMFEED[Page 2]
119 Internet DRAFT SASL 25 October 2004
122 SASL's design is intended to allow new protocols to reuse existing
123 mechanisms without requiring redesign of the mechanisms and allows
124 existing protocols to make use of new mechanisms without redesign of
127 The SASL is conceptually a framework which provides a layer between
128 protocols and mechanisms, as illustrated in the following diagram.
130 SMTP Protocol LDAP Protocol Other Protocols
131 Profile Profile . . .
137 DIGEST-MD5 EXTERNAL Other Mechanisms
138 SASL mechanism SASL mechanism . . .
141 It is through the interfaces of this layer that the framework allows
142 any protocol to be utilized with any mechanism. While the layer does
143 generally hide the particulars of protocols from mechanisms and the
144 particulars of mechanisms from protocols, the layer does not
145 generally hide the particulars of mechanisms from protocol
146 implementations. For example, different mechanisms require different
147 information to operate, some of them use password based
148 authentication, some of then require realm information, others make
149 use of Kerberos tickets, certificates, etc. Also, in order to
150 perform authorization, server implementations have to implement a
151 mapping from a mechanism-specific authentication identity format to a
152 protocol-specific format.
154 It is possible to design and implement this framework in ways which
155 do abstract away particulars of similar mechanisms. Such
156 implementation could also be designed to be shared by multiple
157 implementations of various protocols.
159 As illustrated above, the SASL framework interfaces with both
160 protocols and mechanisms.
162 To use SASL, a protocol includes a command for identifying and
163 authenticating a user to a server and for optionally negotiating a
164 security layer for subsequent protocol interactions. If the use of a
165 security layer is negotiated, that security layer is inserted between
166 the protocol and the connection. Section 4 ("Protocol profile
167 requirements") profiles the requirements that a protocol
168 specification must fulfill to make use of SASL. A SASL protocol
169 profile is a part of the protocol specification that satisfies the
173 A. Melnikov FORMFEED[Page 3]
179 Internet DRAFT SASL 25 October 2004
182 requirements of Section 4.
184 A SASL mechanism is a series of server challenges and client
185 responses specific to the mechanism. Each SASL mechanism is
186 identified by a registered name. Section 5 ("Mechanism profile
187 guidelines") profiles the requirements that a mechanism specification
188 must fulfill to define a SASL mechanism.
190 This document is written to serve several different audiences:
192 - protocol designers using this specification to support
193 authentication in their protocol,
195 - mechanism designers that define new SASL mechanisms, and
197 - implementors of clients or servers for those protocols using this
200 The sections "Authentication mechanisms", "Protocol profile
201 requirements", "Specific issues", and "Security considerations" cover
202 issues that protocol designers need to understand and address in
203 profiling this specification for use in a specific protocol.
205 The sections "Authentication mechanisms", "Mechanism profile
206 guidelines", "Security considerations" and "Registration procedure"
207 cover issues that mechanism designers need to understand and address
208 in designing new SASL mechanisms.
210 The sections "Authentication mechanisms", "Protocol profile
211 requirements", "Specific issues" and "Security considerations" cover
212 issues that implementors of a protocol that uses SASL framework need
213 to understand. The implementors will also need to understand a
214 specification of a SASL profile specific to the protocol, as well as
215 aspects of mechanism specifications they intend to use (regardless of
216 whether they are implementing the mechanisms themselves or using an
217 existing implementation) to understand, for instance, the mechanism-
218 specific authentication identity forms, the offered services, and
219 security and other considerations.
221 2.1. Relationship to other documents
223 This document obsoletes RFC 2222. It replaces all portions of RFC
224 2222 excepting sections 7.1 (Kerberos version 4 mechanism), 7.2
225 (GSSAPI mechanism), 7.3 (S/Key mechanism). The Kerberos version 4
226 (KERBEROS_IV) and S/Key (SKEY) mechanisms are now viewed as obsolete.
227 The GSSAPI mechanism is now separately specified [SASL-GSSAPI].
233 A. Melnikov FORMFEED[Page 4]
239 Internet DRAFT SASL 25 October 2004
242 3. Authentication mechanisms
244 SASL mechanisms are named by strings, from 1 to 20 characters in
245 length, consisting of ASCII [ASCII] upper-case letters, digits,
246 hyphens, and/or underscores. Names of SASL mechanisms or families of
247 mechanisms must be registered with the Internet Assigned Numbers
248 Authority (IANA) as described in section 8.2.
250 The "sasl-mech" ABNF production below defines the syntax of a SASL
251 mechanism name. This uses the Augmented Backus-Naur Form (ABNF)
252 notation as specified in [ABNF].
254 sasl-mech = 1*20mech-char
255 mech-char = UPPER-ALPHA / DIGIT / HYPHEN / UNDERSCORE
256 ; mech-char is restricted to "A"-"Z", "0"-"9", "-",
257 ; and "_" from ASCII character set.
259 UPPER-ALPHA = %x41-5A
272 3.1. Authentication Exchange
274 A SASL mechanism is responsible for conducting an authentication
275 exchange. This consists of a series of server challenges and client
276 responses, the contents of which are specific to and defined by the
277 mechanism. To the application protocol, the challenges and responses
278 are opaque binary tokens of arbitrary length (including 0-length).
279 The protocol's profile then specifies how these binary tokens are
280 encoded for transfer over the connection.
282 After receiving an authentication command or any client response, a
283 server mechanism may issue a challenge, indicate failure, or indicate
284 completion. The server mechanism may return additional data with a
285 completion indication. The protocol's profile specifies how each of
286 these is then represented over the connection.
288 After receiving a challenge, a client mechanism may issue a response
289 or abort the exchange. The protocol's profile specifies how each of
293 A. Melnikov FORMFEED[Page 5]
299 Internet DRAFT SASL 25 October 2004
302 these are then represented over the connection.
304 During the authentication exchange, the mechanism performs
305 authentication, transmits an authorization identity (sometimes known
306 as a username<<>>) from the client to server, and may negotiate the
307 use of a mechanism-specific security layer. If the use of a security
308 layer is agreed upon, then the mechanism must also define or
309 negotiate the maximum security layer buffer size that each side is
312 3.2. Identity Concepts
315 Conceptually, SASL framework involves two identities:
316 1) an identity associated with the authentication
317 credentials (termed the authentication identity), and
318 2) an identity to act as (termed the authorization
321 The client provides its credentials and, optionally, a
322 string representing the requested authorization identity
323 as part of the SASL exchange. When this string is omitted or empty,
324 the client is requesting to act as the identity
325 associated with the credentials (e.g., the user is
326 requesting to act as the authentication identity).
328 The server is responsible for verifying the client's
329 credentials and verifying that the client is allowed to
330 act as the authorization identity. A SASL exchange
331 fails if either (or both) of these verifications fails.
333 SASL mechanism specifications describe the form of credentials
334 used to authenticate clients, and SASL application
335 profiles describe the form of authorization identities
336 transferred as part of authentication exchange.
338 precise form(s) of the authentication identities (used
339 within the server in its verifications, or otherwise)
340 and the precise form(s) of the authorization identities
341 (used in making authorization decisions, or otherwise) is
342 beyond the scope of the SASL and this specification. In
343 some circumstances, the precise identity forms used
344 outside of the SASL exchange may be dictated by other
345 specifications. For instance, the authorization policy
346 specification for an application protocol may dictate the
347 precise form that an authorization identity is to be
348 represented in the authorization policy.
353 A. Melnikov FORMFEED[Page 6]
359 Internet DRAFT SASL 25 October 2004
362 <<Need to address few issues in the two remaining paragraphs>>
363 Any normalization of the authentication identity (for the purposes
364 of conducting authentication exchange) is defined by a particular
365 SASL mechanism, the protocol profile doesn't influence it.
366 Note, that the mechanism specification doesn't control how
367 authentication identity information is represented elsewhere
368 <<need to add few examples>>.
370 The mechanism MUST preserve Unicode codepoints when transferring
371 authorization identity (e.g. the mechanism can't apply any form
375 3.2.1. Authorization identities and proxy authentication
378 A mechanism which is incapable of transmitting an authorization identity
379 must be treated as if it always transmits an authorization identity of an
380 empty string. <<Is this redundant?>>
382 If the authorization identity transmitted during the authentication
383 exchange is not the empty string, this is typically referred
384 to as "proxy authentication". This feature permits agents such as
385 proxy servers to authenticate using their own credentials, yet request
386 the access privileges of the identity for which they are proxying.
388 The server makes an implementation-defined policy decision as to
389 whether the authentication identity is permitted to have the access
390 privileges of the authorization identity and whether the authorization
391 identity is permitted to receive service. If it is not, the server
392 indicates failure of the authentication exchange.
394 As a client might not have the same information as the server,
395 clients SHOULD NOT derive authorization identities from authentication
396 identities. Instead, clients SHOULD provide no (or empty) authorization
397 identity when the user<<client?>> has not provided an authorization identity.
399 The server SHOULD verify that a received authorization identity is in the
400 correct form. Protocol profiles whose authorization identities are simple user
401 names (e.g. IMAP [RFC 3501]) SHOULD use "SASLprep"
402 profile [SASLprep] of the "stringprep" algorithm [StringPrep] to prepare
403 these names for matching. The profiles MAY use a stringprep profile
404 that is more strict than "SASLprep". If the preparation of
405 the authorization identity fails or results in an empty string,
406 the server MUST fail the authentication exchange. The only exception to
407 this rule is when the received authorization identity is already the empty
413 A. Melnikov FORMFEED[Page 7]
419 Internet DRAFT SASL 25 October 2004
422 3.2.2. Authorization Identity Format
424 An authorization identity is a string of zero or more Unicode [Unicode]
425 coded characters. The NUL <U+0000> character is prohibited
426 in authorization identities.
428 The character encoding scheme used for transmitting an authorization
429 identity over the protocol is specified in each authentication mechanism.
430 All IETF-defined mechanisms MUST, and all other mechanisms SHOULD,
431 use UTF-8 [UTF-8]. (See [CHARSET-POLICY] for IETF policy regarding character
432 sets and encoding schemes.)
434 Mechanisms are expected to be capable of carrying the entire Unicode
435 repertoire (with the exception of the NUL character). An authorization
436 identity of the empty string and an absent authorization identity
437 MUST be treated as equivalent. A mechanism
438 which provides an optional field for an authorization identity,
439 SHOULD NOT allow that field, when present, to be empty.
440 The meaning of the empty string as an authorization identity is described
445 If use of a security layer is negotiated by the authentication
446 protocol exchange, the security layer is applied to all subsequent
447 data sent over the connection (until another security layer is negotiated (
448 see also section 6.3) or underlying connection is closed). The security
450 immediately following the last response of the authentication exchange
451 for data sent by the client and the completion indication for data
452 sent by the server. The exact position MUST be defined by the protocol profile
453 (see section 4 part 5).
455 Once the security layer is in effect the
456 protocol stream is processed by the security layer into buffers of
457 protected data. If the security layer is not able to produce a buffer,
458 the connection MUST be closed. If the security layer is not able to
459 decode a received buffer, the connection MUST be closed. In both cases the
460 underlying connection SHOULD be closed gracefully.
462 Each buffer of protected data is
463 transferred over the connection as a stream of octets prepended with a
464 four octet field in network byte order that represents the length of
465 the buffer. The length of the protected data buffer
466 MUST be no larger than the maximum size that was either defined in the
467 mechanism specification or negotiated by
468 the other side during the authentication exchange.
469 Upon the receipt of a data buffer which is larger than the defined/negotiated
473 A. Melnikov FORMFEED[Page 8]
479 Internet DRAFT SASL 25 October 2004
482 maximal buffer size the receiver SHOULD close the connection,
483 as this might be a sign of an attack.
485 SASL mechanisms which are unable to negotiate a security layer
486 are treated as selecting no security layer.
488 4. Protocol profile requirements
490 In order to use this specification, a protocol definition MUST supply
491 the following information:
493 1) A service name, to be selected from the IANA registry of "service"
494 elements for the GSSAPI host-based service name form [GSSAPI]. This
495 service name is made available to the authentication mechanism.
497 The registry is available at the URL
498 <http://www.iana.org/assignments/gssapi-service-names>.
500 2) A definition of the command to initiate the authentication protocol
501 exchange. This command must have as a parameter the
502 name of the mechanism being selected by the client.
504 The command SHOULD have an optional parameter giving an initial
505 response. If the protocol allows for the initial response,
506 the protocol profile MUST also describe how an empty initial response is
507 encoded. This optional parameter allows the client to avoid a round
508 trip when using a mechanism which is defined to have the client send
509 data first. When this initial response is sent by the client and the
510 selected mechanism is defined to have the server start with an initial
511 challenge, the command fails. See section 6.1 of this document for
514 3) A definition of the method by which the authentication protocol
515 exchange is carried out, including how the challenges and responses
516 are encoded, how the server indicates completion or failure of the
517 exchange, how the client aborts an exchange, and how the exchange method
518 interacts with any line length limits in the protocol.
520 The exchange method SHOULD allow the server to include an
521 optional data ("optional challenge") with a success notification. This allows the
522 server to avoid a round trip when using a mechanism which is defined
523 to have the server send additional data along with the indication of
524 successful completion. Note that if additional data is sent with success,
525 it can not be empty. See section 6.2 of this document for further information.
527 4) A protocol profile SHOULD specify a mechanism through
528 which a client may obtain the names of the SASL mechanisms available
529 to it. This is typically done through the protocol's extensions or
533 A. Melnikov FORMFEED[Page 9]
539 Internet DRAFT SASL 25 October 2004
542 capabilities mechanism.
544 5) Identification of the octet where any negotiated security layer starts
545 to take effect, in both directions.
547 6) Specify if the protocol profile supports "multiple authentications"
550 7) If both a Transport Layer Security [TLS] and a SASL security layer are
551 allowed to be negotiated by
552 the protocol, the protocol profile MUST define in which order they are
553 applied to a cleartext data sent over the connection.
555 8) A protocol profile MAY further refine the definition of an
556 authorization identity by adding additional syntactic restrictions and
557 protocol-specific semantics. A protocol profile MUST specify the form
558 of the authorization identity (since it is protocol-specific, as opposed
559 to the authentication identity, which is mechanism-specific) and how
560 authorization identities are to be compared. Profiles whose authorization
561 identities are simple user names (e.g. IMAP [RFC 3501]) SHOULD use
562 "SASLprep" profile [SASLprep] of the "stringprep" algorithm [StringPrep]
563 to prepare these names for matching. The profiles MAY use a stringprep profile
564 that is more strict than SASLprep.
566 9) Where the application-layer protocol does not precisely state
567 how identities established through SASL relate to identities
568 used elsewhere (e.g., access controls) in the application-layer
569 protocol, it may be useful for the application-layer protocol
570 to provide a facility which the client may use to discover the
574 A protocol profile SHOULD NOT attempt to amend the definition of
575 mechanisms or create mechanism-specific encodings. This breaks the
576 separation between protocol and mechanism that is fundamental to the
577 design of SASL. (Likewise, SASL mechanisms are intended to be profile neutral.)
579 5. Mechanism profile guidelines
582 Designers of new SASL mechanism should be aware of the following issues:
584 1) Authorization identity
586 While some legacy mechanisms are incapable of transmitting an authorization
587 identity (which means that for these mechanisms the authorization identity
588 is always the empty string), newly defined mechanisms SHOULD be
589 capable of transmitting a non-empty authorization identity. See also section 3.2.
593 A. Melnikov FORMFEED[Page 10]
599 Internet DRAFT SASL 25 October 2004
602 2) Character string issues
604 Authentication mechanisms SHOULD encode character strings in UTF-8 [UTF-8]
605 (see [CHARSET-POLICY] for IETF policy regarding character sets in IETF protocols).
606 In order to avoid interoperability problems due to differing normalizations,
607 when a mechanism specifies that character data is to be used as input to a
608 cryptographic and/or comparison function, the mechanism specification MUST
609 detail how the data is to be represented, including any normalizations or
610 other preparations, to ensure proper function. Designers of mechanisms SHOULD use
611 the "SASLprep" profile [SASLprep] of the "stringprep" algorithm [StringPrep] where applicable.
612 This recommendation does not apply to authorization identities as their handling is protocol-specific.
614 The preparation can be potentially performed on the client side (upon getting user input
615 or retrieving a value from configuration) or on the server side (upon receiving the value
616 from the client, retrieving a value from its authentication database or generating a
617 new value in order to store in in the authentication database).
618 SASL mechanisms MUST define which entity (or entities) must perform the
619 preparation. If preparation fails or turns a non-empty string into the empty string, the entity
620 doing the preparation MUST fail the authentication exchange.
623 A server side can be represented by multiple processes. For example, the server side may
624 consist of the server process itself that communicated with a client and a
625 utility (a server agent) that is able to store passwords/hashes (or derivitives) in a
626 database that can be later used by the server. For the server agent the
627 requirement to "fail the authentication exchange" should be interpreted
628 as a requirement to refuse to store the data in the database.
630 3) If the underlying cryptographic technology used by a mechanism supports
631 data integrity, then the mechanism specification MUST integrity protect
632 the transmission of an authorization identity and the negotiation of
635 4) The mechanism SHOULD NOT use the authorization identity in generation of any
636 long-term cryptographic keys/hashes. The reason is that different protocols
637 (and sometimes even different implementations of the same protocol) may use
638 multiple forms of an authorization identity that are semantically equivalent
639 and some clients may use one form while other clients use a different form.
641 5) SASL mechanisms should be designed to minimize the number of round
642 trips required, because SASL can be used with protocols where connections
645 6) SASL does not provide for re-keying (see Section 9.1), but SASL mechanisms may.
647 <<Original Nico's text follows:>>
648 SASL mechanisms that support re-keying SHOULD:
649 - indicate that re-keying is or will be needed immediately; <<Alexey: HOW?>>
653 A. Melnikov FORMFEED[Page 11]
659 Internet DRAFT SASL 25 October 2004
662 - provide re-keying messages or transparently include re-keying
663 messages in the security layers; the latter can happen without
664 application involvement, but only as long as the application is
665 engaged in timely bidirectional exchanges with its peer.
667 <<Alternative text by Alexey:>>
668 A SASL mechanism supports re-keying if it is able to generate/process
669 messages that request immediate re-keying and it is able to carry out
670 re-keying exchange. (Note that the mechanism MAY use a single message
671 type to do both). SASL mechanisms that support re-keying MAY also be
672 able to indicate that re-keying will be needed in the future.
673 A re-keying exchange can be conducted transparently by the mechanism,
674 or the mechanism should be able to provide/accept re-keying messages
675 to/from the application. The former can happen without application
676 involvement, but only as long as the application is engaged in timely
677 bidirectional exchanges with its peer.
679 7) SASL mechanisms SHOULD be profile neutral.
683 6.1. Client sends data first
685 Some mechanisms specify that the first data sent in the
686 authentication exchange is from the client to the server.
688 If a protocol's profile permits the command which initiates an
689 authentication exchange to contain an initial client
690 response, this parameter SHOULD be used with such mechanisms.
692 If the initial client response parameter is not given, or if a
693 protocol's profile does not permit the command which initiates an
694 authentication exchange to contain an initial client
695 response, then the server issues a challenge with no data. The
696 client's response to this challenge is then used as the initial client
697 response. (The server then proceeds to send the next challenge,
698 indicates completion, or indicates failure.)
700 6.1.1. Client sends data first examples
703 The following are two examples of the SECURID authentication [SASL-SECURID] in the SMTP
704 protocol [SMTP]. In the first example below, the client is trying fast reauthentication
705 by sending the initial response:
707 S: 220-smtp.example.com ESMTP Server
708 C: EHLO client.example.com
709 S: 250-smtp.example.com Welcome client.example.com
713 A. Melnikov FORMFEED[Page 12]
719 Internet DRAFT SASL 25 October 2004
722 S: 250-AUTH GSSAPI SECURID
724 C: AUTH SECURID AG1hZ251cwAxMjM0NTY3OAA=
725 S: 235 Authentication successful
727 The example below is almost identical to the previous, but here the
728 client chooses not to use the initial response parameter.
730 S: 220-smtp.example.com ESMTP Server
731 C: EHLO client.example.com
732 S: 250-smtp.example.com Welcome client.example.com
733 S: 250-AUTH GSSAPI SECURID
737 C: AG1hZ251cwAxMjM0NTY3OAA=
738 S: 235 Authentication successful
740 Additonal examples that show usage of initial response can be found
744 6.2. Server returns success with additional data
746 Some mechanisms may specify that additional data be sent to the
747 client along with an indication of successful completion of the
748 exchange. This data would, for example, authenticate the server to
751 If a protocol's profile does not permit this additional data to be
752 returned with a success indication, then the server issues the data
753 as a server challenge, without an indication of successful
754 completion. The client then responds with no data. After receiving
755 this empty response, the server then indicates successful completion
756 (with no additional data).
758 Client implementors should be aware of an additional failure case
759 that might occur when the profile supports sending the additional
760 data with success. Imagine that an active attacker is trying to
761 impersonate the server and sends faked data, which should be used to
762 authenticate the server to the client, with success. (A similar
763 situation can happen when either the server and/or the client has a
764 bug and they calculate different responses.) After checking the data,
765 the client will think that the authentication exchange has failed,
766 however the server will think that the authentication exchange has
767 completed successfully. At this point the client can not abort the
768 authentication exchange; it SHOULD close the connection instead.
769 However, if the profile did not support sending of additional data
773 A. Melnikov FORMFEED[Page 13]
779 Internet DRAFT SASL 25 October 2004
782 with success, the client could have aborted the exchange at the very
783 last step of the authentication exchange.
785 6.2.1. Server returns success with additional data examples
788 The following are two examples of a DIGEST-MD5 authentication [SASL-
789 DIGEST] in the Extensible Messaging and Presence Protocol [XMPP]. In
790 the first example below, the server is sending mutual authentication
794 xmlns='jabber:client'
795 xmlns:stream='http://etherx.jabber.org/streams'
799 xmlns='jabber:client'
800 xmlns:stream='http://etherx.jabber.org/streams'
805 <mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
806 <mechanism>DIGEST-MD5</mechanism>
807 <mechanism>CRAM-MD5</mechanism>
810 C: <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl'
811 mechanism='DIGEST-MD5'/>
812 S: <challenge xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
813 cmVhbG09InNvbWVyZWFsbSIsbm9uY2U9Ik9BNk1HOXRFUUdtMmhoIixxb3A9
814 ImF1dGgiLGNoYXJzZXQ9dXRmLTgsYWxnb3JpdGhtPW1kNS1zZXNzCg==
816 C: <response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
817 dXNlcm5hbWU9InNvbWVub2RlIixyZWFsbT0ic29tZXJlYWxtIixub25jZT0i
818 T0E2TUc5dEVRR20yaGgiLGNub25jZT0iT0E2TUhYaDZWcVRyUmsiLG5jPTAw
819 MDAwMDAxLHFvcD1hdXRoLGRpZ2VzdC11cmk9InhtcHAvZXhhbXBsZS5jb20i
820 LHJlc3BvbnNlPWQzODhkYWQ5MGQ0YmJkNzYwYTE1MjMyMWYyMTQzYWY3LGNo
823 S: <success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
824 cnNwYXV0aD1lYTQwZjYwMzM1YzQyN2I1NTI3Yjg0ZGJhYmNkZmZmZAo=
827 The example below is almost identical to the previous, but here
828 the server chooses not to use the additional data with success.
833 A. Melnikov FORMFEED[Page 14]
839 Internet DRAFT SASL 25 October 2004
843 xmlns='jabber:client'
844 xmlns:stream='http://etherx.jabber.org/streams'
848 xmlns='jabber:client'
849 xmlns:stream='http://etherx.jabber.org/streams'
854 <mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
855 <mechanism>DIGEST-MD5</mechanism>
856 <mechanism>CRAM-MD5</mechanism>
859 C: <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl'
860 mechanism='DIGEST-MD5'/>
861 S: <challenge xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
862 cmVhbG09InNvbWVyZWFsbSIsbm9uY2U9Ik9BNk1HOXRFUUdtMmhoIixxb3A9
863 ImF1dGgiLGNoYXJzZXQ9dXRmLTgsYWxnb3JpdGhtPW1kNS1zZXNzCg==
865 C: <response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
866 dXNlcm5hbWU9InNvbWVub2RlIixyZWFsbT0ic29tZXJlYWxtIixub25jZT0i
867 T0E2TUc5dEVRR20yaGgiLGNub25jZT0iT0E2TUhYaDZWcVRyUmsiLG5jPTAw
868 MDAwMDAxLHFvcD1hdXRoLGRpZ2VzdC11cmk9InhtcHAvZXhhbXBsZS5jb20i
869 LHJlc3BvbnNlPWQzODhkYWQ5MGQ0YmJkNzYwYTE1MjMyMWYyMTQzYWY3LGNo
872 S: <challenge xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
873 cnNwYXV0aD1lYTQwZjYwMzM1YzQyN2I1NTI3Yjg0ZGJhYmNkZmZmZAo=
875 C: <response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/>
876 S: <success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/>
878 6.3. Multiple authentications
880 Unless otherwise stated by the protocol's profile, only one
881 successful SASL negotiation may occur in a protocol session. In this
882 case, once an authentication exchange has successfully completed,
883 further attempts to initiate an authentication exchange fail.
885 If a profile explicitly permits multiple successful SASL negotiations
886 to occur, then in no case may multiple security layers be
887 simultaneously in effect. If a security layer is in effect and a
888 subsequent SASL negotiation selects a second security layer, then the
889 second security layer replaces the first; this can be used as a form
893 A. Melnikov FORMFEED[Page 15]
899 Internet DRAFT SASL 25 October 2004
902 of re-keying, where SASL mechanisms that provide security layers fail
903 to provide for re-keying, provided that the authenticated identity
904 remains the same. If a security layer is in effect and a subsequent
905 SASL negotiation selects no security layer, the original security
906 layer remains in effect.
908 Where a protocol profile permits multiple successful SASL
909 negotiations, the profile MUST detail the effect of a failed SASL
910 negotiation upon the previously established authentication state.
911 In particular, it MUST state whether the previously established
912 authenticated state remains in force or whether the connection is to
913 revert to an non-authenticated state. Regardless of the specified
914 effect upon authentication state, the previously negotiated security
915 layer remains in effect.
917 7. The EXTERNAL mechanism
919 The mechanism name associated with external authentication is
922 The client sends a single message containing the UTF-8 encoding of
923 the requested authorization identity. The message may be empty. The
924 form of the authorization identity may be restricted by the
925 application protocol's SASL profile.
927 Some system external to SASL must authenticate the client. If that
928 succeeds, the server determines the authentication identity from
929 information from this system. If the requested authorization
930 identity is empty, the authorization identity is derived from the
931 authentication identity. The server determines if the authentication
932 identity is allowed to act as the authorization identity. If all
933 that succeeds, the server indicates successful completion of the
934 authentication exchange; otherwise it indicates failure.
936 The system providing this external information may be, for example,
937 IPSec [IPSec] or TLS [TLS]. However, the client can make no
938 assumptions as to what information the server can use in determining
939 client authorization. For example, just because TLS was established,
940 doesn't mean that the server will use the information provided by
945 The following syntax specification uses the augmented Backus-Naur
946 Form (BNF) notation as specified in [ABNF]. Non-terminals referenced
947 but not defined below are as defined by [UTF-8].
949 The "extern-resp" rule below defines the message sent from client to
953 A. Melnikov FORMFEED[Page 16]
959 Internet DRAFT SASL 25 October 2004
964 extern-resp = *( UTF8-char-no-nul )
966 UTF8-char-no-nul = UTF8-1-no-nul / UTF8-2 / UTF8-3 / UTF8-4
968 UTF8-1-no-nul = %x01-7F
971 7.2. Examples of SASL EXTERNAL
973 The following is an example of an EXTERNAL authentication in the SMTP
974 protocol [SMTP]. In this example, the client is proxy authenticating,
975 sending the authorization identity "fred@example.com" in the
976 (optional) initial response. The server has obtained the client's
977 (authentication) identity from an external service, such as IPsec,
978 and has a security policy that permits that identity to assume the
979 identity of the asserted authorization identity.
981 To the protocol profile, the sequence "fred@example.com" is an opaque
982 binary data. The SASL protocol profile for SMTP [SMTP-AUTH] specifies
983 that server challenges and client responses are encoded in BASE64
984 [BASE64, section 3]; the BASE64 encoding of "fred@example.com" is
985 "ZnJlZEBleGFtcGxlLmNvbQ==".
987 S: 220 smtp.example.com ESMTP server ready
988 C: EHLO jgm.example.com
989 S: 250-smtp.example.com
990 S: 250 AUTH DIGEST-MD5 EXTERNAL
991 C: AUTH EXTERNAL ZnJlZEBleGFtcGxlLmNvbQ==
992 S: 235 Authentication successful.
994 The following example is almost identical to the one above, but the
995 client doesn't request proxy authentication.
997 S: 220 smtp.example.com ESMTP server ready
998 C: EHLO jgm.example.com
999 S: 250-smtp.example.com
1000 S: 250 AUTH DIGEST-MD5 EXTERNAL
1002 S: 235 Authentication successful.
1004 The following is an example of an EXTERNAL authentication in the
1005 IMAP4 protocol [IMAP]. IMAP4 doesn't support the initial response
1006 feature of SASL. As in the previous example, the client doesn't
1007 request proxy authentication.
1009 S: * OK IMAP4rev1 Server
1013 A. Melnikov FORMFEED[Page 17]
1019 Internet DRAFT SASL 25 October 2004
1023 S: * CAPABILITY IMAP4 IMAP4rev1 AUTH=DIGEST-MD5 AUTH=EXTERNAL
1025 C: A01 AUTHENTICATE EXTERNAL
1026 (note that there is a space following the "+" in the following line)
1032 8. IANA Considerations
1035 8.1. Guidelines for IANA
1038 It is requested that IANA updates the SASL mechanisms registry as
1042 Change the "Intended usage" of the KERBEROS_V4 and SKEY mechanism
1043 registrations to OBSOLETE. Change the "Published specification"
1044 of the EXTERNAL mechanism to this document. Updated registration
1045 information is provided in Section 8.6.
1047 8.2. Registration procedure
1050 Registration of a SASL mechanism is done by filling in the template
1051 in section 8.5 and sending it via electronic mail to <iana@iana.org>.
1052 IANA has the right to reject obviously bogus registrations, but will
1053 perform no review of claims made in the registration form. SASL
1054 mechanism registrations are currently available at the URL
1055 <http://www.iana.org/assignments/sasl-mechanisms>.
1057 There is no naming convention for SASL mechanisms; any name that
1058 conforms to the syntax of a SASL mechanism name can be registered.
1059 However an IETF Standards Track document may reserve a portion of the
1060 SASL mechanism namespace ("family of SASL mechanisms") for its own
1061 use, amending the registration rules for that portion of the
1062 namespace. Each family of SASL mechanisms MUST be identified by a
1065 While the registration procedures do not require expert review,
1066 authors of SASL mechanisms are encouraged to seek community review
1067 and comment whenever that is feasible. Authors may seek community
1068 review by posting a specification of their proposed mechanism as an
1069 Internet-Draft. SASL mechanisms intended for widespread use should
1073 A. Melnikov FORMFEED[Page 18]
1079 Internet DRAFT SASL 25 October 2004
1082 be standardized through the normal IETF process, when appropriate.
1084 8.3. Comments on SASL mechanism registrations
1086 Comments on registered SASL mechanisms should first be sent to the
1087 "owner" of the mechanism and/or to the SASL WG mailing list.
1088 Submitters of comments may, after a reasonable attempt to contact the
1089 owner, request IANA to attach their comment to the SASL mechanism
1090 registration itself. If IANA approves of this, the comment will be
1091 made accessible in conjunction with the SASL mechanism registration
1096 Once a SASL mechanism registration has been published by IANA, the
1097 author may request a change to its definition. The change request
1098 follows the same procedure as the registration request.
1100 The owner of a SASL mechanism may pass responsibility for the SASL
1101 mechanism to another person or agency by informing IANA; this can be
1102 done without discussion or review.
1104 The IESG may reassign responsibility for a SASL mechanism. The most
1105 common case of this will be to enable changes to be made to
1106 mechanisms where the author of the registration has died, moved out
1107 of contact or is otherwise unable to make changes that are important
1110 SASL mechanism registrations may not be deleted; mechanisms which are
1111 no longer believed appropriate for use can be declared OBSOLETE by a
1112 change to their "intended usage" field; such SASL mechanisms will be
1113 clearly marked in the lists published by IANA.
1115 The IESG is considered to be the owner of all SASL mechanisms which
1116 are on the IETF standards track.
1118 8.5. Registration template
1121 Subject: Registration of SASL mechanism X
1123 Family of SASL mechanisms: (YES or NO)
1125 SASL mechanism name (or prefix for the family):
1127 Security considerations:
1129 Published specification (optional, recommended):
1133 A. Melnikov FORMFEED[Page 19]
1139 Internet DRAFT SASL 25 October 2004
1142 Person & email address to contact for further information:
1146 (One of COMMON, LIMITED USE or OBSOLETE)
1148 Owner/Change controller:
1150 (Any other information that the author deems interesting may be
1151 added below this line.)
1154 8.6. The EXTERNAL mechanism registration
1156 It is requested that the SASL Mechanism registry [IANA-SASL] entry
1157 for the EXTERNAL mechanism be updated to reflect that this document
1158 now provides its technical specification.
1161 Subject: Updated Registration of SASL mechanism EXTERNAL
1163 Family of SASL mechanisms: NO
1165 SASL mechanism name: EXTERNAL
1167 Security considerations: See RFC XXXX, section 9.
1169 Published specification (optional, recommended): RFC XXXX
1171 Person & email address to contact for further information:
1172 Alexey Melnikov <Alexey.Melnikov@isode.com>
1174 Intended usage: COMMON
1176 Owner/Change controller: IESG <iesg@ietf.org>
1178 Note: Updates existing entry for EXTERNAL
1180 9. Security considerations
1182 Security issues are discussed throughout this memo.
1184 When the client selects a security layer with at least integrity
1185 protection, this protects against an active attacker hijacking the
1186 connection and modifying the authentication exchange to negotiate a
1187 plaintext connection.
1189 When a server or client supports multiple authentication mechanisms,
1193 A. Melnikov FORMFEED[Page 20]
1199 Internet DRAFT SASL 25 October 2004
1202 each of which has a different security strength, it is possible for
1203 an active attacker to cause a party to use the least secure mechanism
1204 supported. To protect against this sort of attack, a client or
1205 server which supports mechanisms of different strengths should have a
1206 configurable minimum strength that it will use. It is not sufficient
1207 for this minimum strength check to only be on the server, since an
1208 active attacker can change which mechanisms the client sees as being
1209 supported, causing the client to send authentication credentials for
1210 its weakest supported mechanism.
1212 The client's selection of a SASL mechanism is done in the clear and
1213 may be modified by an active attacker. It is important for any new
1214 SASL mechanisms to be designed such that an active attacker cannot
1215 obtain an authentication with weaker security properties by modifying
1216 the SASL mechanism name and/or the challenges and responses.
1218 In order to detect Man-in-the-middle (MITM) attacks the client MAY
1219 list available SASL mechanisms both before and after the SASL
1220 security layer is negotiated. This allows the client to detect
1221 active attacks that remove mechanisms from the server's list of
1222 supported mechanisms, and allows the client to ensure that it is
1223 using the best mechanism supported by both client and server. New
1224 protocol profiles SHOULD require servers to make the list of SASL
1225 mechanisms available for the initial authentication available to the
1226 client after security layers are established. Some older protocols
1227 do not require this (or don't support listing of SASL mechanisms once
1228 authentication is complete); for these protocols clients MUST NOT
1229 treat an empty list of SASL mechanisms after authentication as a MITM
1232 Any protocol interactions prior to authentication are performed in
1233 the clear and may be modified by an active attacker. In the case
1234 where a client selects integrity protection, it is important that any
1235 security-sensitive protocol negotiations be performed after
1236 authentication is complete. Protocols should be designed such that
1237 negotiations performed prior to authentication should be either
1238 ignored or revalidated once authentication is complete.
1240 Clients should be admonished to validate TLS server IDs to prevent
1241 MITM attacks when using SASL-over-TLS. The same recommendation
1242 applies to other protocols providing security services.
1244 When use of a security layer is negotiated by the authentication
1245 protocol exchange, the receiver should handle gracefully any
1246 protected data buffer larger than the defined/negotiated maximal
1247 size. In particular, it must not blindly allocate the amount of
1248 memory specified in the buffer size field, as this might cause the
1249 "out of memory" condition. If the receiver detects a large block, it
1253 A. Melnikov FORMFEED[Page 21]
1259 Internet DRAFT SASL 25 October 2004
1262 SHOULD close the connection.
1264 Distributed server implementations need to be careful in how they
1265 trust other parties. In particular, authentication secrets should
1266 only be disclosed to other parties that are trusted to manage and use
1267 those secrets in manner acceptable to disclosing party. Applications
1268 using SASL assume that SASL security layers providing data
1269 confidentiality are secure even when an attacker chooses the text to
1270 be protected by the security layer. Similarly applications assume
1271 that the SASL security layer is secure even if the attacker can
1272 manipulate the ciphertext output of the security layer. New SASL
1273 mechanisms MUST meet these assumptions.
1275 "stringprep" and Unicode security considerations apply to
1276 authentication identities, authorization identities and passwords.
1278 The EXTERNAL mechanism provides no security protection; it is
1279 vulnerable to spoofing by either client or server, active attack, and
1280 eavesdropping. It should only be used when external security
1281 mechanisms are present and have sufficient strength.
1287 The secure or administratively permitted lifetimes of SASL
1288 mechanisms' security layers are finite. Cryptographic keys weaken as
1289 they are used and as time passes; the more time and/or ciphertext
1290 that a cryptanalyst has after the first use of the a key, the easier
1291 it is for the cryptanalyst to mount attacks on the key.
1293 Administrative limits on security layers lifetime may take the form
1294 of time limits expressed in x.509 certificates, Kerberos V tickets,
1295 or in directories, and are often desired. <<In practice one likely
1296 effect of administrative security layers lifetime limits is that
1297 applications may find that security layers stop working in the middle
1298 of application protocol operation, such as, perhaps, during large
1299 data transfers. As the result of this the connection will be closed
1300 (see section 3.3), which will result in unpleasant user experience.>>
1302 Re-keying (key renegotiation process) is a<<>> way of addressing the
1303 weakening of cryptographic keys. SASL framework does not provide for
1304 re-keying. SASL mechanisms may; all future SASL mechanisms that
1305 provide security layers should provide for re-keying.
1307 Applications that wish to re-key SASL security layers where the
1308 mechanism does not provide for re-keying should reauthenticate the
1309 same IDs and replace the expired or soon-to-expire security layers.
1313 A. Melnikov FORMFEED[Page 22]
1319 Internet DRAFT SASL 25 October 2004
1322 This approach requires support for re-keying in the application
1323 protocols. See section 6.3.
1328 10.1. Normative References
1330 [ABNF] Crocker, D. (Ed.), Overell, P., "Augmented BNF for Syntax
1331 Specifications: ABNF", RFC 2234, November 1997
1333 [ASCII] American National Standards Institute, "Code Extension
1334 Techniques for Use with the 7-bit Coded Character Set of American
1335 National Standard Code (ASCII) for Information Interchange", FIPS PUB
1338 [CHARSET-POLICY] Alvestrand, H., "IETF Policy on Character Sets and
1339 Languages", RFC 2277, BCP 18, January 1998
1341 [GSSAPI] Linn, J., "Generic Security Service Application Program
1342 Interface, Version 2, Update 1", RFC 2743, January 2000
1344 [KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate
1345 Requirement Levels", RFC 2119, BCP 19, March 1997
1347 [Unicode] The Unicode Consortium, "The Unicode Standard, Version
1348 3.2.0" is defined by "The Unicode Standard, Version 3.0" (Reading,
1349 MA, Addison-Wesley, 2000. ISBN 0-201-61633-5), as amended by the
1350 "Unicode Standard Annex #27: Unicode 3.1"
1351 (http://www.unicode.org/reports/tr27/) and by the "Unicode Standard
1352 Annex #28: Unicode 3.2" (http://www.unicode.org/reports/tr28/).
1354 [Stringprep] Hoffman, P., Blanchet, M., "Preparation of
1355 Internationalized Strings ("stringprep")", RFC 3454, December 2002.
1357 [SASLprep] Zeilenga, K., "SASLprep: Stringprep profile for user names
1358 and passwords", Work in progress, draft-ietf-sasl-saslprep-XX.txt.
1360 [UTF-8] Yergeau, F., "UTF-8, a transformation format of ISO 10646",
1361 RFC 3629, STD 63, November 2003.
1363 10.2. Informative References
1366 [SASL-GSSAPI] Melnikov, A., "SASL GSSAPI mechanisms", work in
1367 progress, draft-ietf-sasl-gssapi-XX.txt, November 2003
1369 [SASL-DIGEST] Leach, P., Newman, C., Melnikov, A., "Using Digest
1373 A. Melnikov FORMFEED[Page 23]
1379 Internet DRAFT SASL 25 October 2004
1382 Authentication as a SASL Mechanism", work in progress, draft-ietf-
1383 sasl-rfc2831bis-XX.txt, replaces RFC 2831
1385 [SASL-OTP] Newman, C., "The One-Time-Password SASL Mechanism", RFC
1388 [SASL-SECURID] Nystrom, M., "The SecurID(r) SASL Mechanism", RFC
1391 [SMTP] Klensin, J., "Simple Mail Transfer Protocol", RFC 2821, April
1394 [SMTP-AUTH] Myers, J., "SMTP Service Extension for Authentication",
1395 RFC 2554, March 1999.
1397 Being revised by Siemborski, R., "SMTP Service Extension for
1398 Authentication", work in progress, draft-siemborski-rfc2554bis-
1401 [XMPP] Saint-Andre, P., "Extensible Messaging and Presence Protocol
1402 (XMPP): Core", work in progress, draft-ietf-xmpp-core-XX.txt.
1404 [BASE64] Josefsson, S., "The Base16, Base32, and Base64 Data
1405 Encodings", RFC 3548, July 2003.
1407 [RFC-INSTRUCTIONS] Postel, J., Reynolds, J., "Instructions to RFC
1408 Authors", RFC 2223, October 1997.
1410 [IANA-SASL] IANA, "SIMPLE AUTHENTICATION AND SECURITY LAYER (SASL)
1411 MECHANISMS", http://www.iana.org/assignments/sasl-mechanisms.
1413 [TLS] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", RFC
1416 [IPSec] Kent, S., and R. Atkinson, "Security Architecture for the
1417 Internet Protocol", RFC 2401, November 1998.
1419 [Sec-Glossary] Shirey, R., "Internet Security Glossary", RFC 2828,
1423 11. Editor's Address
1427 5 Castle Business Village
1433 A. Melnikov FORMFEED[Page 24]
1439 Internet DRAFT SASL 25 October 2004
1442 TW12 2BX, United Kingdom
1444 Email: Alexey.Melnikov@isode.com
1445 URI: http://www.melnikov.ca/
1449 This document is a revision of RFC 2222 written by John G. Myers. He
1450 also contributed significantly to this revision.
1452 Contributions of many members of the SASL mailing list are gratefully
1453 acknowledged, in particular that of Kurt Zeilenga, Peter Saint-Andre,
1454 Rob Siemborski, Magnus Nystrom, Jeffrey Hutzelman, Hallvard B
1455 Furuseth, Tony Hansen, Simon Josefsson, Abhijit Menon-Sen, RL 'Bob'
1456 Morgan, Sam Hartman, Nicolas Williams, Tim Alsop and Luke Howard.
1458 Appendix A. Relation of SASL to transport security
1460 Questions have been raised about the relationship between SASL and
1461 various services (such as IPsec and TLS) which provide a secured
1464 Two of the key features of SASL are:
1466 The separation of the authorization identity from the identity in
1467 the client's credentials. This permits agents such as proxy
1468 servers to authenticate using their own credentials, yet request
1469 the access privileges of the identity for which they are proxying.
1471 Upon successful completion of an authentication exchange, the
1472 server knows the authorization identity the client wishes to use.
1473 This allows servers to move to a "user is authenticated" state in
1476 These features are extremely important to some application protocols,
1477 yet Transport Security services do not always provide them. To
1478 define SASL mechanisms based on these services would be a very messy
1479 task, as the framing of these services would be redundant with the
1480 framing of SASL and some method of providing these important SASL
1481 features would have to be devised.
1483 Sometimes it is desired to enable within an existing connection the
1484 use of a security service which does not fit the SASL model. (TLS is
1485 an example of such a service.) This can be done by adding a command,
1486 for example "STARTTLS", to the protocol. Such a command is outside
1487 the scope of SASL, and should be different from the command which
1488 starts a SASL authentication protocol exchange.
1493 A. Melnikov FORMFEED[Page 25]
1499 Internet DRAFT SASL 25 October 2004
1502 In certain situations, it is reasonable to use SASL underneath one of
1503 these Transport Security services. The transport service would
1504 secure the connection, either service would authenticate the client,
1505 and SASL would negotiate the authorization identity. The SASL
1506 negotiation would be what moves the protocol from "unauthenticated"
1507 to "authenticated" state. The "EXTERNAL" SASL mechanism is
1508 explicitly intended to handle the case where the transport service
1509 secures the connection and authenticates the client and SASL
1510 negotiates the authorization identity.
1512 Appendix B. Changes since RFC 2222
1514 The GSSAPI mechanism was removed. It is now specified in a separate
1515 document [SASL-GSSAPI].
1517 The "KERBEROS_V4" mechanism defined in RFC 2222 is obsolete and has
1520 The "SKEY" mechanism described in RFC 2222 is obsolete and has been
1521 removed. It has been replaced by the OTP mechanism [SASL-OTP].
1523 The introduction has been substantially reorganized and clarified.
1525 Clarified the definition and semantics of the authorization identity.
1527 Prohibited the NUL character in authorization identities.
1529 Added a section on character string issues.
1531 The word "must" in the first paragraph of the "Protocol profile
1532 requirements" section was changed to "MUST".
1534 Specified that protocol profiles SHOULD provide a way for clients to
1535 discover available SASL mechanisms.
1537 Made the requirement that protocol profiles specify the semantics of
1538 the authorization identity optional to the protocol profile.
1539 Clarified that such a specification is a refinement of the definition
1540 in the base SASL spec.
1542 Added a requirement discouraging protocol profiles from breaking the
1543 separation between protocol and mechanism.
1545 Mentioned that standards track documents may carve out their own
1546 portions of the SASL mechanism namespace and may amend registration
1547 rules for the portion. However registration of individual SASL
1548 mechanisms is still required.
1553 A. Melnikov FORMFEED[Page 26]
1559 Internet DRAFT SASL 25 October 2004
1562 Clarified that authorization identity should be encoded in UTF-8.
1564 Specified that the authorization identity in the EXTERNAL mechanism
1565 is encoded in UTF-8.
1567 Added a statement that a protocol profile SHOULD allow challenge data
1568 to be sent with a success indication.
1570 Added a security consideration for the EXTERNAL mechanism.
1572 Clarified sections concerning success with additional data.
1574 Cleaned up IANA considerations/registrations and assembled them in
1577 Updated references and split them into Informative and Normative.
1579 Added text to the Security considerations section regarding handling
1580 of extremely large SASL blocks.
1582 Added text about SASLprep for authentication identities and
1583 passwords. Described where SASLprep preparation should take place.
1585 Added paragraph about verifying authorization identities.
1587 Added a protocol profile requirement to specify interaction between
1588 SASL and TLS security layers.
1590 Added a protocol profile requirement to specify if it supports
1593 Removed the text that seemed to suggest that SASL security layer must
1594 not be used when TLS is available.
1596 Created two subsections in 3.2 to talk separately about proxy
1597 authorization and format of the authorization identities.
1599 Made requirement to verify that an authorization identity is correct
1600 by performing SASLprep.
1602 Clarified that each SASL mechanism must decide where SASLprep is
1605 Added 4 new examples for initial response and additional data with
1608 Added text on checking the list of available SASL mechanisms after
1609 negotiating a security layer.
1613 A. Melnikov FORMFEED[Page 27]
1619 Internet DRAFT SASL 25 October 2004
1622 Added definition of "integrity protection" and "confidentiality
1625 Added warning about negotiating no layer once a security layer is
1628 Added new section with guidelines to a SASL mechanism designer.
1630 Added a requirement to specify how an empty initial challenge is
1631 encoded if initial response is supported by a protocol.
1633 Clarified that empty "additional data with success" is not allowed.
1635 Replaced "buffers of cipher-text" with "buffers of protected data"
1638 Clarified that SASL EXTERNAL can be used even with SASL profiles that
1639 don't support initial client response.
1641 Changed "authentication protocol exchange" to "authentication
1642 exchange" everywhere.
1645 Appendix C. Full Copyright Statement and Intellectual Property Statement
1647 Full Copyright Statement
1650 Copyright (C) The Internet Society (2004). This document is subject
1651 to the rights, licenses and restrictions contained in BCP 78, and
1652 except as set forth therein, the authors retain all their rights.
1654 This document and translations of it may be copied and furnished to
1655 others, and derivative works that comment on or otherwise explain it
1656 or assist in its implementation may be prepared, copied, published
1657 and distributed, in whole or in part, without restriction of any
1658 kind, provided that the above copyright notice and this paragraph are
1659 included on all such copies and derivative works. However, this
1660 document itself may not be modified in any way, such as by removing
1661 the copyright notice or references to the Internet Society or other
1662 Internet organizations, except as needed for the purpose of
1663 developing Internet standards in which case the procedures for
1664 copyrights defined in the Internet Standards process must be
1665 followed, or as required to translate it into languages other than
1668 The limited permissions granted above are perpetual and will not be
1669 revoked by the Internet Society or its successors or assigns.
1673 A. Melnikov FORMFEED[Page 28]
1679 Internet DRAFT SASL 25 October 2004
1682 This document and the information contained herein are provided on an
1683 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
1684 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
1685 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
1686 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
1687 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
1688 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
1692 Funding for the RFC Editor function is currently provided by the
1695 Intellectual Property
1697 The IETF takes no position regarding the validity or scope of any
1698 Intellectual Property Rights or other rights that might be claimed to
1699 pertain to the implementation or use of the technology described in
1700 this document or the extent to which any license under such rights
1701 might or might not be available; nor does it represent that it has
1702 made any independent effort to identify any such rights. Information
1703 on the procedures with respect to rights in RFC documents can be
1704 found in BCP 78 and BCP 79.
1706 Copies of IPR disclosures made to the IETF Secretariat and any
1707 assurances of licenses to be made available, or the result of an
1708 attempt made to obtain a general license or permission for the use of
1709 such proprietary rights by implementers or users of this
1710 specification can be obtained from the IETF on-line IPR repository at
1711 http://www.ietf.org/ipr.
1713 The IETF invites any interested party to bring to its attention any
1714 copyrights, patents or patent applications, or other proprietary
1715 rights that may cover technology that may be required to implement
1716 this standard. Please address the information to the IETF at ietf-
1733 A. Melnikov FORMFEED[Page 29]
1739 Internet DRAFT SASL 25 October 2004
1742 Status of this Memo ..... i
1744 1. Conventions used in this document .. 2
1746 2.1. Relationship to other documents .. 4
1747 3. Authentication mechanisms ... 5
1748 3.1. Authentication Exchange ..... 5
1749 3.2. Identity Concepts . 6
1750 3.2.1. Authorization identities and proxy authentication
1752 3.2.2. Authorization Identity Format
1754 3.3. Security layers
1756 4. Protocol profile requirements
1758 5. Mechanism profile guidelines
1762 6.1. Client sends data first
1764 6.1.1. Client sends data first examples
1766 6.2. Server returns success with additional data ..... 13
1767 6.2.1. Server returns success with additional data examples .... 14
1768 6.3. Multiple authentications .... 15
1769 7. The EXTERNAL mechanism . 16
1770 7.1. Formal syntax ..... 16
1771 7.2. Examples of SASL EXTERNAL ... 17
1772 8. IANA Considerations .... 18
1773 8.1. Guidelines for IANA .... 18
1774 8.2. Registration procedure . 18
1775 8.3. Comments on SASL mechanism registrations ... 19
1776 8.4. Change control .... 19
1777 8.5. Registration template .. 19
1778 8.6. The EXTERNAL mechanism registration ... 20
1779 9. Security considerations . 20
1780 9.1. Re-keying .... 22
1781 10. References .. 23
1782 10.1. Normative References .. 23
1783 10.2. Informative References ..... 23
1784 11. Editor's Address .. 24
1785 12. Acknowledgments ... 25
1786 Appendix A. Relation of SASL to transport security .... 25
1787 Appendix B. Changes since RFC 2222 ..... 26
1788 Appendix C. Full Copyright Statement and Intellectual Property Statement
1793 A. Melnikov FORMFEED[Page ii]
1799 Internet DRAFT SASL 25 October 2004
1802 Full Copyright Statement ..... 28
1803 Intellectual Property ... 29
1853 A. Melnikov FORMFEED[Page iii]