Subject: DIGEST-MD5: conflict between RFC 2829 and RFC 2831

From: Steve Miller <[email-masked]>
Date: Tue, 27 Mar 2001 11:22:13 -0500

Hi,

We are currently building our own ldap/SASL DIGEST-MD5 implementation,
and have been testing against the Openldap (2.0.7) with the Cyrus
(1.5.24) SASL implementation. We have source code for both.

We ran into an interoperability problem between the OpenLdap/Cyrus
client and our server. I tracked it down to a difference in step 3 of
RFC2831, that is the second server response to the client. Section 2.1.3
of that spec says:

2.1.3  Step Three

   The server receives and validates the "digest-response". The server
   checks that the nonce-count is "00000001". If it supports subsequent
   authentication (see section 2.2), it saves the value of the nonce and
** the nonce-count. It sends a message formatted as follows:

    response-auth = "rspauth" "=" response-value
    ...

   where response-value is calculated as above, using the values sent in

And RFC 2829, Authentication Methods for LDAP, section 6.1 says:

   ...
   The server will respond with a bind response in which the resultCode
   is either success, or an error indication.  If the authentication is
** successful and the server does not support subsequent authentication,
** then the credentials field is absent.  If the authentication is
   successful and the server supports subsequent authentication, then
   the credentials field contains the string defined by "response-auth"
   in section 2.1.3 of [4].   Support for subsequent authentication is
   OPTIONAL in clients and servers.

According to subsequent email discussions with Larry Greenfield
(CMU/Cyrus), RFC 2829 is incorrect in this regard, and inconsistent with
current practice, which always send the 'rspauth', even if the server
does not support subsequent authentication.

Since I've just started following these lists, I'm not clear on how to
get this resolved; I'm certainly willing to help.  A possible re-wording
is:

RFC 2831
  ...
  The server receives and validates the "digest-response". The server
  checks that the nonce-count is "00000001". It sends a message
formatted as follows:

  ...(description of rspauth )...

  If the server supports subsequent authentication (see section 2.2), it
saves the value of the nonce   and the nonce-count.
  ...

RFC 2829
   ...
   The server will respond with a bind response in which the resultCode
   is either success, or an error indication.  If the authentication is
   successful , then the credentials field contains the string defined
by "response-auth"
   in section 2.1.3 of [4].   Support for subsequent authentication is
   OPTIONAL in clients and servers.
   ...

Steve

---

From: "Kurt D. Zeilenga" <[email-masked]>
Date: Tue, 27 Mar 2001 09:26:52 -0800

Please cc [email-masked] on any issue pertaining
to the LDAP SASL profile (RFC 2251/2829).  I note that DIGEST-MD5
is actually on the LDAPbis charter as well... (at least until
a SASL WG is formed).

Kurt

---

From: "RL 'Bob' Morgan" <[email-masked]>
Date: Tue, 27 Mar 2001 10:56:24 -0800 (PST)

Steve:

As Kurt mentioned, both RFCs 2829 and 2831 are in the process of being
rewritten to move to Draft Standard status (if possible) and discussion is
happening on the ietf-ldabis list.  The content of RFC 2829 in particular
will be reorganized for clarity, including the bind/sasl language
currently in RFC 2251.  This bug (thanks for the catch, Steve, and you
too, Larry) is an excellent example of why it is A Bad Thing to restate
specifics of SASL mechanisms in application-protocol SASL profiles, so we
should avoid making this mistake again as we rewrite.

 - RL "Bob"

---

---

From: "Kurt D. Zeilenga" <[email-masked]>
Date: Tue, 27 Mar 2001 09:26:52 -0800

Kurt

---

From: "RL 'Bob' Morgan" <[email-masked]>
Date: Tue, 27 Mar 2001 10:56:24 -0800 (PST)

Steve:

 - RL "Bob"

---