You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by er...@apache.org on 2007/12/20 02:00:17 UTC

svn commit: r605767 - /directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultBindHandler.java

Author: erodriguez
Date: Wed Dec 19 17:00:16 2007
New Revision: 605767

URL: http://svn.apache.org/viewvc?rev=605767&view=rev
Log:
Added support to LDAP SASL GSSAPI for different Kerberos encryption types (DIRSERVER-1113):
o  Call to retrieve Subject now iterates over all keys returned for the LDAP service principal and adds the keys to the private credentials.

Modified:
    directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultBindHandler.java

Modified: directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultBindHandler.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultBindHandler.java?rev=605767&r1=605766&r2=605767&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultBindHandler.java (original)
+++ directory/apacheds/branches/bigbang/protocol-ldap/src/main/java/org/apache/directory/server/ldap/support/DefaultBindHandler.java Wed Dec 19 17:00:16 2007
@@ -68,6 +68,7 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Hashtable;
+import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 
@@ -481,14 +482,22 @@
             throw new ServiceConfigurationException( message );
         }
 
-        EncryptionKey key = entry.getKeyMap().get( EncryptionType.DES_CBC_MD5 );
-        byte[] keyBytes = key.getKeyValue();
-        int type = key.getKeyType().getOrdinal();
-        int kvno = key.getKeyVersion();
-
-        KerberosKey serviceKey = new KerberosKey( servicePrincipal, keyBytes, type, kvno );
         Subject subject = new Subject();
-        subject.getPrivateCredentials().add( serviceKey );
+
+        Iterator<EncryptionType> it = entry.getKeyMap().keySet().iterator();
+
+        while ( it.hasNext() )
+        {
+            EncryptionKey key = entry.getKeyMap().get( it.next() );
+
+            byte[] keyBytes = key.getKeyValue();
+            int type = key.getKeyType().getOrdinal();
+            int kvno = key.getKeyVersion();
+
+            KerberosKey serviceKey = new KerberosKey( servicePrincipal, keyBytes, type, kvno );
+
+            subject.getPrivateCredentials().add( serviceKey );
+        }
 
         return subject;
     }