@ -5,6 +5,7 @@ import org.springframework.security.ui.preauth.x509.X509PreAuthenticatedProcessi
@@ -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 {
@@ -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" , stat usCheckingU serService) ;
provider . getPropertyValues ( ) . addPropertyValue ( "preAuthenticatedUserDetailsService" , preAuthUserService ) ;
}