Forráskód Böngészése

Added code to set the manager username and password if supplied.

Luke Taylor 18 éve
szülő
commit
0b54eece28

+ 13 - 1
core/src/main/java/org/springframework/security/config/LdapBeanDefinitionParser.java

@@ -6,6 +6,7 @@ import org.springframework.beans.factory.support.AbstractBeanDefinition;
 import org.springframework.beans.factory.support.RootBeanDefinition;
 import org.springframework.beans.factory.BeanDefinitionStoreException;
 import org.springframework.util.StringUtils;
+import org.springframework.util.Assert;
 import org.springframework.security.ldap.DefaultInitialDirContextFactory;
 import org.springframework.security.providers.ldap.LdapAuthenticationProvider;
 import org.springframework.security.providers.ldap.populator.DefaultLdapAuthoritiesPopulator;
@@ -34,7 +35,6 @@ public class LdapBeanDefinitionParser extends AbstractBeanDefinitionParser {
     /** Defines the Url of the ldap server to use. If not specified, an embedded apache DS instance will be created */
     private static final String URL_ATTRIBUTE = "url";
     private static final String AUTH_TYPE_ATTRIBUTE = "auth";
-    // TODO: Setting login/passwords for non embedded server.
     private static final String PRINCIPAL_ATTRIBUTE = "managerDn";
     private static final String PASSWORD_ATTRIBUTE = "managerPassword";
 
@@ -68,6 +68,18 @@ public class LdapBeanDefinitionParser extends AbstractBeanDefinitionParser {
             initialDirContextFactory.getConstructorArgumentValues().addIndexedArgumentValue(0, url);
         }
 
+        String managerDn = elt.getAttribute(PRINCIPAL_ATTRIBUTE);
+        String managerPassword = elt.getAttribute(PASSWORD_ATTRIBUTE);
+
+        if (StringUtils.hasText(managerDn)) {
+            Assert.hasText(managerPassword, "You must specify the " + PASSWORD_ATTRIBUTE +
+                    " if you supply a " + managerDn);
+
+            initialDirContextFactory.getPropertyValues().addPropertyValue("managerDn", managerDn);
+            initialDirContextFactory.getPropertyValues().addPropertyValue("managerPassword", managerPassword);
+        }
+
+
         // TODO: Make these default values for 2.0
         initialDirContextFactory.getPropertyValues().addPropertyValue("useLdapContext", Boolean.TRUE);
         initialDirContextFactory.getPropertyValues().addPropertyValue("dirObjectFactory", "org.springframework.ldap.core.support.DefaultDirObjectFactory");