Преглед изворни кода

SEC-1145: Updated LDAP code to make sure pooling flag is removed when binding as a specific user

Luke Taylor пре 16 година
родитељ
комит
b77f780993

+ 1 - 0
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 + "'");

+ 15 - 3
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();
     }
-    
+
 }