You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2013/04/08 11:58:26 UTC

svn commit: r1465583 - /directory/site/trunk/content/apacheds/advanced-ug/4.1.2.2-sasl-cram-md5-authn.mdtext

Author: elecharny
Date: Mon Apr  8 09:58:26 2013
New Revision: 1465583

URL: http://svn.apache.org/r1465583
Log:
Added the content of the SASL CRAM-MD5 page

Modified:
    directory/site/trunk/content/apacheds/advanced-ug/4.1.2.2-sasl-cram-md5-authn.mdtext

Modified: directory/site/trunk/content/apacheds/advanced-ug/4.1.2.2-sasl-cram-md5-authn.mdtext
URL: http://svn.apache.org/viewvc/directory/site/trunk/content/apacheds/advanced-ug/4.1.2.2-sasl-cram-md5-authn.mdtext?rev=1465583&r1=1465582&r2=1465583&view=diff
==============================================================================
--- directory/site/trunk/content/apacheds/advanced-ug/4.1.2.2-sasl-cram-md5-authn.mdtext (original)
+++ directory/site/trunk/content/apacheds/advanced-ug/4.1.2.2-sasl-cram-md5-authn.mdtext Mon Apr  8 09:58:26 2013
@@ -23,3 +23,55 @@ Notice: Licensed to the Apache Software 
     under the License.
 
 # 4.1.2.2 - SASL CRAM-MD5 Authentication
+
+The **CRAM-MD5** **SASL** mechanism is defined by [RFC 2195](http://www.ietf.org/rfc/rfc2195.txt).
+
+We will have an exchange between the client, which will send an empty _Bind request_ (ie, the username and credentials won't be sent the first time), and the server will return a challenge.
+
+The client first send a _BindRequest_ with no credentials:
+
+    :::Text
+    MessageType : BIND_REQUEST
+    Message ID : 1
+        BindRequest
+            Version : '3'
+            Name : 'null'
+            Sasl credentials
+                Mechanism :'CRAM-MD5'
+                Credentials : null
+
+The server will return a _BindResponse_ with a SASL_BIND_IN_PROGRESS status :
+
+    :::Text
+    MessageType : BIND_RESPONSE
+    Message ID : 1
+        BindResponse
+            Ldap Result
+                Result code : (SASL_BIND_IN_PROGRESS) saslBindInProgress -- new
+                Matched Dn : ''
+                Diagnostic message : ''
+            Server sasl credentials : '0x3C 0x2D 0x37 0x38 0x30 0x39 0x37 0x35 0x33 0x32 0x33 0x38 0x35 0x32 0x31 0x37 0x37 0x37 0x37 0x35 0x30 0x2E 0x31 0x33 0x36 0x35 0x34 0x31 0x31 0x39 0x32 0x37 0x30 0x33 0x30 0x40 0x6C 0x6F 0x63 0x61 0x6C 0x68 0x6F 0x73 0x74 0x3E '
+
+and will accordingly send a new _BindRequest_ whith the appropriate credentials whch has been hashed with the server's provided challenge token :
+
+    :::Text
+    MessageType : BIND_REQUEST
+    Message ID : 2
+        BindRequest
+            Version : '3'
+            Name : 'null'
+            Sasl credentials
+                Mechanism :'CRAM-MD5'
+                Credentials : (omitted-for-safety)
+
+In any case, the full exchange aims at transfering the user's credential encrypted instead of passing it in clear text. Once the server receives the password, it will check it against the stored password which must be stored in clear text.
+
+When the server receives a **SASL PLAIN** bind request, it will look for the first entry which **uid** is equal to the provided value, starting from the server **searchBaseDN** position in the DIT.
+
+<DIV class="note" markdown="1">
+ApacheDS expect the given name to be stored in the **UID** Attribute. This is not configurable in this version of the server.
+</DIV>
+
+<DIV class="warn" markdown="1">
+The password must be stored in clear text on the server. This is a serious weakness...
+</DIV>