Ver Fonte

Update new X509 namespace config to use status checking of user accounts by default.

Luke Taylor há 18 anos atrás
pai
commit
2343577fec

+ 4 - 2
core/src/main/java/org/springframework/security/config/X509BeanDefinitionParser.java

@@ -5,6 +5,7 @@ import org.springframework.security.ui.preauth.x509.X509PreAuthenticatedProcessi
 import org.springframework.security.ui.preauth.x509.SubjectDnX509PrincipalExtractor;
 import org.springframework.security.providers.preauth.PreAuthenticatedAuthenticationProvider;
 import org.springframework.security.providers.preauth.UserDetailsByNameServiceWrapper;
+import org.springframework.security.userdetails.decorator.StatusCheckingUserDetailsService;
 import org.springframework.beans.factory.xml.BeanDefinitionParser;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.springframework.beans.factory.config.BeanDefinition;
@@ -47,9 +48,10 @@ public class X509BeanDefinitionParser implements BeanDefinitionParser {
         String userServiceRef = element.getAttribute(ATT_USER_SERVICE_REF);
 
         if (StringUtils.hasText(userServiceRef)) {
-            RuntimeBeanReference userService = new RuntimeBeanReference(userServiceRef);
+            RootBeanDefinition statusCheckingUserService = new RootBeanDefinition(StatusCheckingUserDetailsService.class);
+            statusCheckingUserService.getConstructorArgumentValues().addIndexedArgumentValue(0, new RuntimeBeanReference(userServiceRef));
             BeanDefinition preAuthUserService = new RootBeanDefinition(UserDetailsByNameServiceWrapper.class);
-            preAuthUserService.getPropertyValues().addPropertyValue("userDetailsService", userService);
+            preAuthUserService.getPropertyValues().addPropertyValue("userDetailsService", statusCheckingUserService);
             provider.getPropertyValues().addPropertyValue("preAuthenticatedUserDetailsService", preAuthUserService);
         }