Bläddra i källkod

SEC-658: Add support for ldap-user-service to AuthenticationProviderBeanDefinitionParser.

Luke Taylor 17 år sedan
förälder
incheckning
ca75905c3e

+ 3 - 0
core/src/main/java/org/springframework/security/config/AuthenticationProviderBeanDefinitionParser.java

@@ -40,6 +40,7 @@ class AuthenticationProviderBeanDefinitionParser implements BeanDefinitionParser
         String ref = element.getAttribute(ATT_USER_DETAILS_REF);
         Element userServiceElt = DomUtils.getChildElementByTagName(element, Elements.USER_SERVICE);
         Element jdbcUserServiceElt = DomUtils.getChildElementByTagName(element, Elements.JDBC_USER_SERVICE);
+        Element ldapUserServiceElt = DomUtils.getChildElementByTagName(element, Elements.LDAP_USER_SERVICE);
 
         if (StringUtils.hasText(ref)) {
             if (userServiceElt != null || jdbcUserServiceElt != null) {
@@ -59,6 +60,8 @@ class AuthenticationProviderBeanDefinitionParser implements BeanDefinitionParser
             userDetailsService = new UserServiceBeanDefinitionParser().parse(userServiceElt, parserContext);
         } else if (jdbcUserServiceElt != null) {
             userDetailsService = new JdbcUserServiceBeanDefinitionParser().parse(jdbcUserServiceElt, parserContext);
+        } else if (ldapUserServiceElt != null) {
+            userDetailsService = new LdapUserServiceBeanDefinitionParser().parse(ldapUserServiceElt, parserContext);
         } else {
             throw new SecurityConfigurationException(Elements.AUTHENTICATION_PROVIDER
                     + " requires a UserDetailsService" );

+ 1 - 0
core/src/main/resources/org/springframework/security/config/spring-security-2.0.xsd

@@ -631,6 +631,7 @@
         <xs:choice>
           <xs:element ref="security:user-service"/>
           <xs:element ref="security:jdbc-user-service"/>
+          <xs:element ref="security:ldap-user-service"/>
         </xs:choice>
         <xs:element ref="security:password-encoder"/>
       </xs:choice>

+ 14 - 0
core/src/test/java/org/springframework/security/config/AuthenticationProviderBeanDefinitionParserTests.java

@@ -71,6 +71,20 @@ public class AuthenticationProviderBeanDefinitionParserTests {
         getProvider().authenticate(bob);
     }
 
+    @Test
+    public void worksWithJdbcUserService() throws Exception {
+        setContext(" <authentication-provider>" +
+                "        <password-encoder hash='{sha}'/>" +
+                "        <user-service>" +
+                "            <user name='bob' password='{SSHA}PpuEwfdj7M1rs0C2W4ssSM2XEN/Y6S5U' authorities='ROLE_A' />" +
+                "        </user-service>" +
+                "    </authentication-provider>");
+
+        getProvider().authenticate(bob);
+    }
+
+
+
     @Test
     public void externalUserServiceAndPasswordEncoderWork() throws Exception {
         setContext(" <authentication-provider user-service-ref='customUserService'>" +