From b77f780993b8974a2af1f54e82c6a235f7bbd0c6 Mon Sep 17 00:00:00 2001 From: Luke Taylor Date: Wed, 3 Jun 2009 16:12:54 +0000 Subject: [PATCH] SEC-1145: Updated LDAP code to make sure pooling flag is removed when binding as a specific user --- .../DefaultSpringSecurityContextSource.java | 1 + ...efaultSpringSecurityContextSourceTests.java | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/springframework/security/ldap/DefaultSpringSecurityContextSource.java b/core/src/main/java/org/springframework/security/ldap/DefaultSpringSecurityContextSource.java index 4a77927035..44bb63ef4e 100644 --- a/core/src/main/java/org/springframework/security/ldap/DefaultSpringSecurityContextSource.java +++ b/core/src/main/java/org/springframework/security/ldap/DefaultSpringSecurityContextSource.java @@ -71,6 +71,7 @@ public class DefaultSpringSecurityContextSource extends LdapContextSource implem env.put(Context.SECURITY_PRINCIPAL, userDn); env.put(Context.SECURITY_CREDENTIALS, credentials); + env.remove(SUN_LDAP_POOLING_FLAG); if (logger.isDebugEnabled()) { logger.debug("Creating context with principal: '" + userDn + "'"); diff --git a/core/src/test/java/org/springframework/security/ldap/DefaultSpringSecurityContextSourceTests.java b/core/src/test/java/org/springframework/security/ldap/DefaultSpringSecurityContextSourceTests.java index 1b437c8fc8..58ed1668ba 100644 --- a/core/src/test/java/org/springframework/security/ldap/DefaultSpringSecurityContextSourceTests.java +++ b/core/src/test/java/org/springframework/security/ldap/DefaultSpringSecurityContextSourceTests.java @@ -1,12 +1,16 @@ package org.springframework.security.ldap; +import static org.junit.Assert.assertNull; + +import javax.naming.directory.DirContext; + import org.junit.Test; /** * @author Luke Taylor * @version $Id$ */ -public class DefaultSpringSecurityContextSourceTests { +public class DefaultSpringSecurityContextSourceTests extends AbstractLdapIntegrationTests { @Test public void instantiationSucceeds() { @@ -15,7 +19,15 @@ public class DefaultSpringSecurityContextSourceTests { @Test public void supportsSpacesInUrl() { - new DefaultSpringSecurityContextSource("ldap://myhost:10389/dc=spring%20framework,dc=org"); + new DefaultSpringSecurityContextSource("ldap://myhost:10389/dc=spring%20framework,dc=org"); } - + + @Test + public void poolingIsntUsedForSingleUser() throws Exception { + DirContext ctx = getContextSource().getReadWriteContext("uid=Bob,ou=people,dc=springframework,dc=org", "bobspassword"); + //com.sun.jndi.ldap.LdapPoolManager.showStats(System.out); + assertNull(ctx.getEnvironment().get("com.sun.jndi.ldap.connect.pool")); + ctx.close(); + } + }