diff --git a/core/src/main/java/org/acegisecurity/ldap/DefaultInitialDirContextFactory.java b/core/src/main/java/org/acegisecurity/ldap/DefaultInitialDirContextFactory.java index 048bc0020f..27880f3d82 100644 --- a/core/src/main/java/org/acegisecurity/ldap/DefaultInitialDirContextFactory.java +++ b/core/src/main/java/org/acegisecurity/ldap/DefaultInitialDirContextFactory.java @@ -35,6 +35,7 @@ import javax.naming.CommunicationException; import javax.naming.Context; import javax.naming.NamingException; import javax.naming.OperationNotSupportedException; +import javax.naming.ldap.InitialLdapContext; import javax.naming.directory.DirContext; import javax.naming.directory.InitialDirContext; @@ -105,6 +106,9 @@ public class DefaultInitialDirContextFactory implements InitialDirContextFactory */ private boolean useConnectionPool = true; + /** Set to true for ldap v3 compatible servers */ + private boolean useLdapContext = false; + //~ Constructors =================================================================================================== /** @@ -169,7 +173,7 @@ public class DefaultInitialDirContextFactory implements InitialDirContextFactory } try { - return new InitialDirContext(env); + return useLdapContext ? new InitialLdapContext(env, null) : new InitialDirContext(env); } catch (NamingException ne) { if ((ne instanceof javax.naming.AuthenticationException) || (ne instanceof OperationNotSupportedException)) { @@ -309,4 +313,8 @@ public class DefaultInitialDirContextFactory implements InitialDirContextFactory public void setUseConnectionPool(boolean useConnectionPool) { this.useConnectionPool = useConnectionPool; } + + public void setUseLdapContext(boolean useLdapContext) { + this.useLdapContext = useLdapContext; + } }