Add.
[gsasl.git] / doc / specification / draft-ietf-sasl-rfc2222bis-09.txt
blob26b9d97e3d0d30e64022a74ec148ee8869265184
2 Network Working Group                                        A. Melnikov
3 Internet Draft                                                    Editor
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)
10 Status of this Memo
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
15    RFC 3668.
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
24    ``work in progress''.
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
62 Abstract
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
82    server respectively.
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.
102 2.    Introduction
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
125    protocols.
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            . . .
132                           \-----        |       -----/
133                                 \       |      /
134                                  SASL framework
135                                 /       |      \
136                           /-----        |       -----\
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
198    specification.
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
260                   ; "A"-"Z"
262    DIGIT        = %x30-39
263                   ; "0"-"9"
265    HYPHEN       = %x2D
266                   ; "-"
268    UNDERSCORE   = %x5F
269                   ; "_"
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
310    able to receive.
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
319      identity).
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.
337    However, the
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
372    of normalization).
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
408    string.
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
441    in Section 3.2.
443 3.3.  Security layers
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
449    layer takes effect
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
512      further information.
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"
548      (see section 6.3).
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
571      identity used.
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.
622    Implementation note:
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
633    the security layer.
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
643    are short-lived.
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.
681 6.    Specific issues
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
723       S: 250 DSN
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
734       S: 250 DSN
735       C: AUTH SECURID
736       S: 334
737       C: AG1hZ251cwAxMjM0NTY3OAA=
738       S: 235 Authentication successful
740    Additonal examples that show usage of initial response can be found
741    in section 7.2.
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
749    the client.
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
791    data with success.
793       C: <stream:stream
794           xmlns='jabber:client'
795           xmlns:stream='http://etherx.jabber.org/streams'
796           to='example.com'
797           version='1.0'>
798       S: <stream:stream
799           xmlns='jabber:client'
800           xmlns:stream='http://etherx.jabber.org/streams'
801           id='c2s_234'
802           from='example.com'
803           version='1.0'>
804       S: <stream:features>
805            <mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
806              <mechanism>DIGEST-MD5</mechanism>
807              <mechanism>CRAM-MD5</mechanism>
808            </mechanisms>
809          </stream:features>
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==
815          </challenge>
816       C: <response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
817          dXNlcm5hbWU9InNvbWVub2RlIixyZWFsbT0ic29tZXJlYWxtIixub25jZT0i
818          T0E2TUc5dEVRR20yaGgiLGNub25jZT0iT0E2TUhYaDZWcVRyUmsiLG5jPTAw
819          MDAwMDAxLHFvcD1hdXRoLGRpZ2VzdC11cmk9InhtcHAvZXhhbXBsZS5jb20i
820          LHJlc3BvbnNlPWQzODhkYWQ5MGQ0YmJkNzYwYTE1MjMyMWYyMTQzYWY3LGNo
821          YXJzZXQ9dXRmLTgK
822          </response>
823       S: <success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
824          cnNwYXV0aD1lYTQwZjYwMzM1YzQyN2I1NTI3Yjg0ZGJhYmNkZmZmZAo=
825          </success>
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
842       C: <stream:stream
843           xmlns='jabber:client'
844           xmlns:stream='http://etherx.jabber.org/streams'
845           to='example.com'
846           version='1.0'>
847       S: <stream:stream
848           xmlns='jabber:client'
849           xmlns:stream='http://etherx.jabber.org/streams'
850           id='c2s_234'
851           from='example.com'
852           version='1.0'>
853       S: <stream:features>
854            <mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
855              <mechanism>DIGEST-MD5</mechanism>
856              <mechanism>CRAM-MD5</mechanism>
857            </mechanisms>
858          </stream:features>
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==
864          </challenge>
865       C: <response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
866          dXNlcm5hbWU9InNvbWVub2RlIixyZWFsbT0ic29tZXJlYWxtIixub25jZT0i
867          T0E2TUc5dEVRR20yaGgiLGNub25jZT0iT0E2TUhYaDZWcVRyUmsiLG5jPTAw
868          MDAwMDAxLHFvcD1hdXRoLGRpZ2VzdC11cmk9InhtcHAvZXhhbXBsZS5jb20i
869          LHJlc3BvbnNlPWQzODhkYWQ5MGQ0YmJkNzYwYTE1MjMyMWYyMTQzYWY3LGNo
870          YXJzZXQ9dXRmLTgK
871          </response>
872       S: <challenge xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
873          cnNwYXV0aD1lYTQwZjYwMzM1YzQyN2I1NTI3Yjg0ZGJhYmNkZmZmZAo=
874          </challenge>
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
920    "EXTERNAL".
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
941    TLS.
943 7.1.  Formal syntax
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
962    server.
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
1001       C: AUTH 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
1022       C: C01 CAPABILITY
1023       S: * CAPABILITY IMAP4 IMAP4rev1 AUTH=DIGEST-MD5 AUTH=EXTERNAL
1024       [...]
1025       C: A01 AUTHENTICATE EXTERNAL
1026       (note that there is a space following the "+" in the following line)
1027       S: +
1028       C:
1029       S: A01 OK Success
1032 8.    IANA Considerations
1035 8.1.  Guidelines for IANA
1038    It is requested that IANA updates the SASL mechanisms registry as
1039    follows:
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
1063    prefix.
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
1092    itself.
1094 8.4.  Change control
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
1108    to the community.
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:
1144      Intended usage:
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
1230    attack.
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.
1284 9.1.  Re-keying
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.
1326 10.    References
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
1336    35, 1974
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
1386    2444, October 1998.
1388    [SASL-SECURID] Nystrom, M., "The SecurID(r) SASL Mechanism", RFC
1389    2808, April 2000.
1391    [SMTP] Klensin, J., "Simple Mail Transfer Protocol", RFC 2821, April
1392    2001.
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-
1399    XX.txt.
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
1414    2246, January 1999.
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,
1420    May 2000.
1423 11.   Editor's Address
1425      Alexey Melnikov
1426      Isode Limited
1427      5 Castle Business Village
1428      36 Station Road
1429      Hampton, Middlesex,
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/
1447 12.   Acknowledgments
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
1462    connection.
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
1474       the protocol.
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
1518    been removed.
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
1575    one place.
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
1591    reauthentication.
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
1603    taking place.
1605    Added 4 new examples for initial response and additional data with
1606    success.
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
1623    protection".
1625    Added warning about negotiating no layer once a security layer is
1626    negotiated.
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"
1636    for clarity.
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
1666    English.
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.
1690 Acknowledgement
1692    Funding for the RFC Editor function is currently provided by the
1693    Internet Society.
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-
1717    ipr@ietf.org.
1733 A. Melnikov                                            FORMFEED[Page 29]
1739 Internet DRAFT                    SASL                   25 October 2004
1742    Status of this Memo .....     i
1743    Abstract .     2
1744    1.  Conventions used in this document ..     2
1745    2.    Introduction .     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
1751    .....     7
1752    3.2.2.  Authorization Identity Format
1753    .....     8
1754    3.3.  Security layers
1755    .....     8
1756    4.    Protocol profile requirements
1757    .....     9
1758    5.    Mechanism profile guidelines
1759    .....     10
1760    6.    Specific issues
1761    .....     12
1762    6.1.  Client sends data first
1763    .....     12
1764    6.1.1.  Client sends data first examples
1765    .....     12
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
1789    .....     28
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]