You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ka...@apache.org on 2010/01/02 19:03:10 UTC
svn commit: r895246 - in
/directory/apacheds/branches/apacheds-schema/server-annotations/src/main/java/org/apache/directory/server:
annotations/CreateLdapServer.java factory/ServerAnnotationProcessor.java
Author: kayyagari
Date: Sat Jan 2 18:03:10 2010
New Revision: 895246
URL: http://svn.apache.org/viewvc?rev=895246&view=rev
Log:
implemented support for adding SASL mechanisms, NTLM provider and setting SASL host name
Modified:
directory/apacheds/branches/apacheds-schema/server-annotations/src/main/java/org/apache/directory/server/annotations/CreateLdapServer.java
directory/apacheds/branches/apacheds-schema/server-annotations/src/main/java/org/apache/directory/server/factory/ServerAnnotationProcessor.java
Modified: directory/apacheds/branches/apacheds-schema/server-annotations/src/main/java/org/apache/directory/server/annotations/CreateLdapServer.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-schema/server-annotations/src/main/java/org/apache/directory/server/annotations/CreateLdapServer.java?rev=895246&r1=895245&r2=895246&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-schema/server-annotations/src/main/java/org/apache/directory/server/annotations/CreateLdapServer.java (original)
+++ directory/apacheds/branches/apacheds-schema/server-annotations/src/main/java/org/apache/directory/server/annotations/CreateLdapServer.java Sat Jan 2 18:03:10 2010
@@ -73,5 +73,14 @@
String certificatePassword() default "";
/** name of the classes implementing extended operations */
- Class<?>[] extendedOpHandlers() default {};
+ Class<?>[] extendedOpHandlers() default {};
+
+ /** supported set of SASL mechanisms */
+ SaslMechanism[] saslMechanisms() default {};
+
+ /** NTLM provider class, default value is a invalid class */
+ Class<?> ntlmProvider() default Object.class;
+
+ /** The name of this host, validated during SASL negotiation. */
+ String saslHost() default "ldap.example.com";
}
\ No newline at end of file
Modified: directory/apacheds/branches/apacheds-schema/server-annotations/src/main/java/org/apache/directory/server/factory/ServerAnnotationProcessor.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/apacheds-schema/server-annotations/src/main/java/org/apache/directory/server/factory/ServerAnnotationProcessor.java?rev=895246&r1=895245&r2=895246&view=diff
==============================================================================
--- directory/apacheds/branches/apacheds-schema/server-annotations/src/main/java/org/apache/directory/server/factory/ServerAnnotationProcessor.java (original)
+++ directory/apacheds/branches/apacheds-schema/server-annotations/src/main/java/org/apache/directory/server/factory/ServerAnnotationProcessor.java Sat Jan 2 18:03:10 2010
@@ -20,17 +20,29 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Map;
import org.apache.directory.server.annotations.CreateKdcServer;
import org.apache.directory.server.annotations.CreateLdapServer;
import org.apache.directory.server.annotations.CreateTransport;
+import org.apache.directory.server.annotations.SaslMechanism;
import org.apache.directory.server.core.DirectoryService;
import org.apache.directory.server.kerberos.kdc.KdcServer;
import org.apache.directory.server.ldap.ExtendedOperationHandler;
import org.apache.directory.server.ldap.LdapServer;
+import org.apache.directory.server.ldap.handlers.bind.MechanismHandler;
+import org.apache.directory.server.ldap.handlers.bind.cramMD5.CramMd5MechanismHandler;
+import org.apache.directory.server.ldap.handlers.bind.digestMD5.DigestMd5MechanismHandler;
+import org.apache.directory.server.ldap.handlers.bind.gssapi.GssapiMechanismHandler;
+import org.apache.directory.server.ldap.handlers.bind.ntlm.NtlmMechanismHandler;
+import org.apache.directory.server.ldap.handlers.bind.ntlm.NtlmProvider;
+import org.apache.directory.server.ldap.handlers.bind.plain.PlainMechanismHandler;
+import org.apache.directory.server.ldap.handlers.extended.StoredProcedureExtendedOperationHandler;
import org.apache.directory.server.protocol.shared.transport.TcpTransport;
import org.apache.directory.server.protocol.shared.transport.Transport;
import org.apache.directory.server.protocol.shared.transport.UdpTransport;
+import org.apache.directory.shared.ldap.constants.SupportedSaslMechanisms;
import org.apache.mina.util.AvailablePortFinder;
import org.junit.runner.Description;
@@ -109,6 +121,8 @@
// Associate the DS to this LdapServer
ldapServer.setDirectoryService( directoryService );
+ ldapServer.setSaslHost( createLdapServer.saslHost() );
+
for( Class<?> extOpClass : createLdapServer.extendedOpHandlers() )
{
try
@@ -122,6 +136,36 @@
}
}
+ for( SaslMechanism saslMech : createLdapServer.saslMechanisms() )
+ {
+ try
+ {
+ MechanismHandler handler = ( MechanismHandler ) saslMech.implClass().newInstance();
+ ldapServer.addSaslMechanismHandler( saslMech.name(), handler );
+ }
+ catch( Exception e )
+ {
+ throw new RuntimeException( "Failed to add the SASL mechanism with the name " + saslMech.name() + " and implementation class " + saslMech.implClass().getName(), e );
+ }
+ }
+
+ NtlmMechanismHandler ntlmHandler = ( NtlmMechanismHandler ) ldapServer.getSaslMechanismHandlers().get( SupportedSaslMechanisms.NTLM );
+ if( ntlmHandler != null )
+ {
+ Class<?> ntlmProviderClass = createLdapServer.ntlmProvider();
+ if( ntlmProviderClass != null )
+ {
+ try
+ {
+ ntlmHandler.setNtlmProvider( ( NtlmProvider ) ntlmProviderClass.newInstance() );
+ }
+ catch( Exception e )
+ {
+ throw new RuntimeException( "Failed to add NTLM provider", e );
+ }
+ }
+ }
+
// Launch the server
try
{