|
|
@@ -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);
|
|
|
}
|
|
|
|