[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
proposed revised AUTHENTICATE command section
Hi,
I'd like to revise the AUTHENTICATE command to the version that I have
included below. This version eliminates the earlier text that seemed to be
a splice of two different sentences that talked about Digest-MD5, DES, and
3DES. It also eliminates other SASL mechanism specific text that did not
belong in this section.
-------------------------
7.1.3. AUTHENTICATE Command
Arguments: <SASL mechanism name> [<initial data>]
Data: continuation data may be requested
Result:
2.0 - Authenticate completed, now in authenticated
state.
6.0 - Failed authentication.
6.1 - Authorization identity refused.
6.2 - Sender aborted authentication, authentication
exchange cancelled.
6.3 - Unsupported Authentication Mechanism.
6.x - Temporary failure (back end authentication
server down).
6.x - Authentication exchange cancelled.
6.x - Authentication mechanism too weak.
6.x - Encryption required.
6.x - Pass phrase expired. The pass phrase was
correct but expired. The user will have to
contact a pass phrase change server prior to
authenticating.
6.x - The user is valid but the server does not
have an entry in the authentication database
for the requested mechanism (e.g., DIGEST-
MD5). If the user successfully authenticates
using a plain text password, then the back
end back end entry will be updated. Note
that if the client chooses to fall back to
plain text password authentication it should
enable an encryption layer or get user-con-
firmation that a one-time transition is ac-
ceptable.
6.x - User account disabled. The user will have to
contact the system administrator to get the
account re-enabled.
9.1 - Unexpected command.
The capabilities of the CS in the authenticated state are reported in
the response from the CS. These may be different than the capabilities
in the Connected, but unauthenticated state.
The AUTHENTICATE command is used by the CUA to identify the user to the
CS. CAP supports a number of authentication methods, the [SASL]
specification
for authentication is the preferred method.
If STARTTLS is negotiated prior to the AUTHENTICATE command, the client
MUST
discard all information about the CS capabilities fetched prior to the TLS
negotiation. In particular, the value of supported SASL Mechanisms MAY
be different
after TLS has been negotiated.
If a SASL security layer is negotiated, the client MUST discard all
information about the CS capabilities fetched prior to SASL. In
particular, if
the client is configured to support multiple SASL mechanisms, it SHOULD
fetch supported SASL Mechanisms both before and after the SASL security
layer is negotiated and verify that the value has not changed after the
SASL security layer was negotiated. This detects active attacks which
remove supported SASL mechanisms from the supported SASL Mechanisms list.
<initial data> is an optional parameter which can be used for mechanisms
which require an initial response from the CUA.
The AUTHENTICATE command is followed by an authentication protocol
exchange, in the form of a series of CS challenges and CUA responses, per
the relevant RFC that describes the specific SASL mechanism being used.
Cancelling the authentication process during its negotiation is
implementation
specific and not within scope of the CAP specification.
If a security layer was negotiated it comes into effect for the CS
starting with the first octet transmitted after the CRLF which follows
the 2.0 reply code, and for the CUA starting with the first octet after
the CRLF of its last response in the authentication exchange. Encrypted
data is transmitted as described in [SASL].
The service name specified by this protocol's profile of SASL is "cap".
[Note: this must be registered with IANA, has anyone done this yet?]
The result of the AUTHENTICATE command includes data indicating the
identity which has been assigned to the session, derived from the
supplied authentication credentials, and/or authorization identifier.
A CAP session does not have an identity until the CUA has issued the
"AUTHENTICATE" command.
The CUA may not issue the "AUTHENTICATE" command multiple times, even if
the first attempt was aborted. If a CUA attempts to do this the CS must
terminate the session.
Data returned in response to a successful login is:
The following examples illustrate the various possibilities for an
authentication protocol exchange.
Here are examples of a successful authentication:
C: AUTHENTICATE KERBEROS_V4
S: AmFYig==
C: BAcAQU5EUkVXLkNNVS5FRFUAOCAsho84kLN3/IJmrMG+25a4DT
S: or//EoAADZI=
C: DiAF5A4gA+oOIALuBkAAmw==
S: 2.0
S: .
S: Content-Type:text/calendar; method=REQUEST; charset=US-ASCII
S: Content-Transfer-Encoding: 7bit
S:
S: BEGIN:VCALENDAR
S: PRODID:-//ACME/CAPserver//EN
S: VERSION:2.1
S: IDENTITY=bill@xxxxxxxxxxx
S: CAPVERSION=1.0
S: ITIPVERSION=1.0
S: AUTH=KERBEROS_V4
S: AUTH=DIGEST_MD5
S: CAR=CAR-FULL-1
S: MINDATE=19700101T000000Z
S: MAXDATE=20370201T000000Z
S: END:VCALENDAR
S: .
This example shows a failed authentication:
C: AUTHENTICATE KERBEROS_V4
S: AmFYig==
C: BAcAQU5EUkVXLkNNVS5FRFUAOCAsho84kLN3/IJmrMG+25a4DT
S: .
S: 6.0
S: .
S: .