SEC-641: Updated to set "source" values on BeanDefinitions where possible.

This commit is contained in:
Luke Taylor 2008-02-05 14:48:39 +00:00
parent 8859034d11
commit b82fbb698d
12 changed files with 68 additions and 29 deletions

View File

@ -32,11 +32,13 @@ public class AnonymousBeanDefinitionParser implements BeanDefinitionParser {
String grantedAuthority = null; String grantedAuthority = null;
String username = null; String username = null;
String key = null; String key = null;
Object source = null;
if (element != null) { if (element != null) {
grantedAuthority = element.getAttribute(ATT_GRANTED_AUTHORITY); grantedAuthority = element.getAttribute(ATT_GRANTED_AUTHORITY);
username = element.getAttribute(ATT_USERNAME); username = element.getAttribute(ATT_USERNAME);
key = element.getAttribute(ATT_KEY); key = element.getAttribute(ATT_KEY);
source = parserContext.extractSource(element);
} }
if (!StringUtils.hasText(grantedAuthority)) { if (!StringUtils.hasText(grantedAuthority)) {
@ -51,12 +53,15 @@ public class AnonymousBeanDefinitionParser implements BeanDefinitionParser {
key = DEF_KEY; key = DEF_KEY;
} }
BeanDefinition filter = new RootBeanDefinition(AnonymousProcessingFilter.class); RootBeanDefinition filter = new RootBeanDefinition(AnonymousProcessingFilter.class);
filter.setSource(source);
filter.getPropertyValues().addPropertyValue("userAttribute", username + "," + grantedAuthority); filter.getPropertyValues().addPropertyValue("userAttribute", username + "," + grantedAuthority);
filter.getPropertyValues().addPropertyValue(ATT_KEY, key); filter.getPropertyValues().addPropertyValue(ATT_KEY, key);
BeanDefinition authManager = ConfigUtils.registerProviderManagerIfNecessary(parserContext); BeanDefinition authManager = ConfigUtils.registerProviderManagerIfNecessary(parserContext);
BeanDefinition provider = new RootBeanDefinition(AnonymousAuthenticationProvider.class); RootBeanDefinition provider = new RootBeanDefinition(AnonymousAuthenticationProvider.class);
provider.setSource(source);
provider.getPropertyValues().addPropertyValue(ATT_KEY, key); provider.getPropertyValues().addPropertyValue(ATT_KEY, key);
ManagedList authMgrProviderList = (ManagedList) authManager.getPropertyValues().getPropertyValue("providers").getValue(); ManagedList authMgrProviderList = (ManagedList) authManager.getPropertyValues().getPropertyValue("providers").getValue();

View File

@ -23,6 +23,7 @@ class AuthenticationProviderBeanDefinitionParser implements BeanDefinitionParser
public BeanDefinition parse(Element element, ParserContext parserContext) { public BeanDefinition parse(Element element, ParserContext parserContext) {
RootBeanDefinition authProvider = new RootBeanDefinition(DaoAuthenticationProvider.class); RootBeanDefinition authProvider = new RootBeanDefinition(DaoAuthenticationProvider.class);
authProvider.setSource(parserContext.extractSource(element));
Element passwordEncoderElt = DomUtils.getChildElementByTagName(element, Elements.PASSWORD_ENCODER); Element passwordEncoderElt = DomUtils.getChildElementByTagName(element, Elements.PASSWORD_ENCODER);

View File

@ -34,6 +34,10 @@ public class ConcurrentSessionsBeanDefinitionParser implements BeanDefinitionPar
controllerBuilder.addPropertyValue("sessionRegistry", new RuntimeBeanReference(BeanIds.SESSION_REGISTRY)); controllerBuilder.addPropertyValue("sessionRegistry", new RuntimeBeanReference(BeanIds.SESSION_REGISTRY));
filterBuilder.addPropertyValue("sessionRegistry", new RuntimeBeanReference(BeanIds.SESSION_REGISTRY)); filterBuilder.addPropertyValue("sessionRegistry", new RuntimeBeanReference(BeanIds.SESSION_REGISTRY));
Object source = parserContext.extractSource(element);
filterBuilder.setSource(source);
controllerBuilder.setSource(source);
String expiryUrl = element.getAttribute("expiryUrl"); String expiryUrl = element.getAttribute("expiryUrl");
if (StringUtils.hasText(expiryUrl)) { if (StringUtils.hasText(expiryUrl)) {

View File

@ -40,23 +40,26 @@ public class FormLoginBeanDefinitionParser implements BeanDefinitionParser {
String defaultTargetUrl = null; String defaultTargetUrl = null;
String authenticationFailureUrl = null; String authenticationFailureUrl = null;
String loginPage = null; String loginPage = null;
Object source = null;
if (elt != null) { if (elt != null) {
loginUrl = elt.getAttribute(ATT_LOGIN_URL); loginUrl = elt.getAttribute(ATT_LOGIN_URL);
defaultTargetUrl = elt.getAttribute(ATT_FORM_LOGIN_TARGET_URL); defaultTargetUrl = elt.getAttribute(ATT_FORM_LOGIN_TARGET_URL);
authenticationFailureUrl = elt.getAttribute(ATT_FORM_LOGIN_AUTHENTICATION_FAILURE_URL); authenticationFailureUrl = elt.getAttribute(ATT_FORM_LOGIN_AUTHENTICATION_FAILURE_URL);
loginPage = elt.getAttribute(ATT_LOGIN_PAGE); loginPage = elt.getAttribute(ATT_LOGIN_PAGE);
source = parserContext.extractSource(elt);
} }
ConfigUtils.registerProviderManagerIfNecessary(parserContext); ConfigUtils.registerProviderManagerIfNecessary(parserContext);
BeanDefinition filterBean = createFilterBean(loginUrl, defaultTargetUrl, authenticationFailureUrl); RootBeanDefinition filterBean = createFilterBean(loginUrl, defaultTargetUrl, authenticationFailureUrl);
filterBean.setSource(source);
filterBean.getPropertyValues().addPropertyValue("authenticationManager", filterBean.getPropertyValues().addPropertyValue("authenticationManager",
new RuntimeBeanReference(BeanIds.AUTHENTICATION_MANAGER)); new RuntimeBeanReference(BeanIds.AUTHENTICATION_MANAGER));
BeanDefinitionBuilder entryPointBuilder = BeanDefinitionBuilder entryPointBuilder =
BeanDefinitionBuilder.rootBeanDefinition(AuthenticationProcessingFilterEntryPoint.class); BeanDefinitionBuilder.rootBeanDefinition(AuthenticationProcessingFilterEntryPoint.class);
entryPointBuilder.setSource(source);
// If no login page has been defined, add in the default page generator. // If no login page has been defined, add in the default page generator.
@ -79,7 +82,7 @@ public class FormLoginBeanDefinitionParser implements BeanDefinitionParser {
return null; return null;
} }
private BeanDefinition createFilterBean(String loginUrl, String defaultTargetUrl, String authenticationFailureUrl) { private RootBeanDefinition createFilterBean(String loginUrl, String defaultTargetUrl, String authenticationFailureUrl) {
BeanDefinitionBuilder filterBuilder = BeanDefinitionBuilder filterBuilder =
BeanDefinitionBuilder.rootBeanDefinition(AuthenticationProcessingFilter.class); BeanDefinitionBuilder.rootBeanDefinition(AuthenticationProcessingFilter.class);
@ -103,6 +106,6 @@ public class FormLoginBeanDefinitionParser implements BeanDefinitionParser {
filterBuilder.addPropertyValue("authenticationFailureUrl", authenticationFailureUrl); filterBuilder.addPropertyValue("authenticationFailureUrl", authenticationFailureUrl);
return filterBuilder.getBeanDefinition(); return (RootBeanDefinition) filterBuilder.getBeanDefinition();
} }
} }

View File

@ -60,6 +60,8 @@ public class LdapServerBeanDefinitionParser implements BeanDefinitionParser {
contextSource.getConstructorArgumentValues().addIndexedArgumentValue(0, url); contextSource.getConstructorArgumentValues().addIndexedArgumentValue(0, url);
} }
contextSource.setSource(parserContext.extractSource(elt));
String managerDn = elt.getAttribute(ATT_PRINCIPAL); String managerDn = elt.getAttribute(ATT_PRINCIPAL);
String managerPassword = elt.getAttribute(ATT_PASSWORD); String managerPassword = elt.getAttribute(ATT_PASSWORD);
@ -143,6 +145,7 @@ public class LdapServerBeanDefinitionParser implements BeanDefinitionParser {
contextSource.getPropertyValues().addPropertyValue("password", "secret"); contextSource.getPropertyValues().addPropertyValue("password", "secret");
RootBeanDefinition apacheContainer = new RootBeanDefinition(ApacheDSContainer.class); RootBeanDefinition apacheContainer = new RootBeanDefinition(ApacheDSContainer.class);
apacheContainer.setSource(parserContext.extractSource(element));
apacheContainer.getConstructorArgumentValues().addGenericArgumentValue(configuration); apacheContainer.getConstructorArgumentValues().addGenericArgumentValue(configuration);
apacheContainer.getConstructorArgumentValues().addGenericArgumentValue(contextSource); apacheContainer.getConstructorArgumentValues().addGenericArgumentValue(contextSource);

View File

@ -62,13 +62,17 @@ public class LdapUserServiceBeanDefinitionParser extends AbstractUserDetailsServ
groupSearchBase = DEF_GROUP_SEARCH_BASE; groupSearchBase = DEF_GROUP_SEARCH_BASE;
} }
Object source = parserContext.extractSource(elt);
RuntimeBeanReference contextSource = new RuntimeBeanReference(server); RuntimeBeanReference contextSource = new RuntimeBeanReference(server);
BeanDefinition search = new RootBeanDefinition(FilterBasedLdapUserSearch.class); RootBeanDefinition search = new RootBeanDefinition(FilterBasedLdapUserSearch.class);
search.setSource(source);
search.getConstructorArgumentValues().addIndexedArgumentValue(0, userSearchBase); search.getConstructorArgumentValues().addIndexedArgumentValue(0, userSearchBase);
search.getConstructorArgumentValues().addIndexedArgumentValue(1, userSearchFilter); search.getConstructorArgumentValues().addIndexedArgumentValue(1, userSearchFilter);
search.getConstructorArgumentValues().addIndexedArgumentValue(2, contextSource); search.getConstructorArgumentValues().addIndexedArgumentValue(2, contextSource);
BeanDefinition populator = new RootBeanDefinition(DefaultLdapAuthoritiesPopulator.class); RootBeanDefinition populator = new RootBeanDefinition(DefaultLdapAuthoritiesPopulator.class);
populator.setSource(source);
populator.getConstructorArgumentValues().addIndexedArgumentValue(0, contextSource); populator.getConstructorArgumentValues().addIndexedArgumentValue(0, contextSource);
populator.getConstructorArgumentValues().addIndexedArgumentValue(1, groupSearchBase); populator.getConstructorArgumentValues().addIndexedArgumentValue(1, groupSearchBase);
populator.getPropertyValues().addPropertyValue("groupSearchFilter", groupSearchFilter); populator.getPropertyValues().addPropertyValue("groupSearchFilter", groupSearchFilter);

View File

@ -38,6 +38,7 @@ public class LogoutBeanDefinitionParser implements BeanDefinitionParser {
} }
BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(LogoutFilter.class); BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(LogoutFilter.class);
builder.setSource(parserContext.extractSource(element));
if (!StringUtils.hasText(logoutUrl)) { if (!StringUtils.hasText(logoutUrl)) {
logoutUrl = DEF_LOGOUT_URL; logoutUrl = DEF_LOGOUT_URL;

View File

@ -68,7 +68,8 @@ public class PasswordEncoderParser {
passwordEncoder = new RuntimeBeanReference(ref); passwordEncoder = new RuntimeBeanReference(ref);
} else { } else {
Class beanClass = (Class) ENCODER_CLASSES.get(hash); Class beanClass = (Class) ENCODER_CLASSES.get(hash);
BeanDefinition beanDefinition = new RootBeanDefinition(beanClass); RootBeanDefinition beanDefinition = new RootBeanDefinition(beanClass);
beanDefinition.setSource(parserContext.extractSource(element));
if (useBase64) { if (useBase64) {
if (beanClass.isAssignableFrom(BaseDigestPasswordEncoder.class)) { if (beanClass.isAssignableFrom(BaseDigestPasswordEncoder.class)) {
beanDefinition.getPropertyValues().addPropertyValue("encodeHashAsBase64", "true"); beanDefinition.getPropertyValues().addPropertyValue("encodeHashAsBase64", "true");

View File

@ -27,7 +27,8 @@ public class PortMappingsBeanDefinitionParser implements BeanDefinitionParser {
public static final String ATT_HTTPS_PORT = "https"; public static final String ATT_HTTPS_PORT = "https";
public BeanDefinition parse(Element element, ParserContext parserContext) { public BeanDefinition parse(Element element, ParserContext parserContext) {
BeanDefinition portMapper = new RootBeanDefinition(PortMapperImpl.class); RootBeanDefinition portMapper = new RootBeanDefinition(PortMapperImpl.class);
portMapper.setSource(parserContext.extractSource(element));
if (element != null) { if (element != null) {
List mappingElts = DomUtils.getChildElementsByTagName(element, Elements.PORT_MAPPING); List mappingElts = DomUtils.getChildElementsByTagName(element, Elements.PORT_MAPPING);

View File

@ -33,15 +33,17 @@ public class RememberMeBeanDefinitionParser implements BeanDefinitionParser {
String tokenRepository = null; String tokenRepository = null;
String dataSource = null; String dataSource = null;
String key = null; String key = null;
Object source = null;
if (element != null) { if (element != null) {
tokenRepository = element.getAttribute(ATT_TOKEN_REPOSITORY); tokenRepository = element.getAttribute(ATT_TOKEN_REPOSITORY);
dataSource = element.getAttribute(ATT_DATA_SOURCE); dataSource = element.getAttribute(ATT_DATA_SOURCE);
key = element.getAttribute(ATT_KEY); key = element.getAttribute(ATT_KEY);
source = parserContext.extractSource(element);
} }
BeanDefinition filter = new RootBeanDefinition(RememberMeProcessingFilter.class); RootBeanDefinition filter = new RootBeanDefinition(RememberMeProcessingFilter.class);
BeanDefinition services = new RootBeanDefinition(PersistentTokenBasedRememberMeServices.class); RootBeanDefinition services = new RootBeanDefinition(PersistentTokenBasedRememberMeServices.class);
filter.getPropertyValues().addPropertyValue("authenticationManager", filter.getPropertyValues().addPropertyValue("authenticationManager",
new RuntimeBeanReference(BeanIds.AUTHENTICATION_MANAGER)); new RuntimeBeanReference(BeanIds.AUTHENTICATION_MANAGER));
@ -76,7 +78,11 @@ public class RememberMeBeanDefinitionParser implements BeanDefinitionParser {
} }
BeanDefinition authManager = ConfigUtils.registerProviderManagerIfNecessary(parserContext); BeanDefinition authManager = ConfigUtils.registerProviderManagerIfNecessary(parserContext);
BeanDefinition provider = new RootBeanDefinition(RememberMeAuthenticationProvider.class); RootBeanDefinition provider = new RootBeanDefinition(RememberMeAuthenticationProvider.class);
filter.setSource(source);
services.setSource(source);
provider.setSource(source);
provider.getPropertyValues().addPropertyValue(ATT_KEY, key); provider.getPropertyValues().addPropertyValue(ATT_KEY, key);
services.getPropertyValues().addPropertyValue(ATT_KEY, key); services.getPropertyValues().addPropertyValue(ATT_KEY, key);

View File

@ -13,18 +13,20 @@ import org.w3c.dom.Element;
/** /**
* @author Luke Taylor * @author Luke Taylor
* @version $Id$ * @version $Id$
* @since 2.0
*/ */
public class SaltSourceBeanDefinitionParser implements BeanDefinitionParser { public class SaltSourceBeanDefinitionParser implements BeanDefinitionParser {
static final String ATT_USER_PROPERTY = "user-property"; static final String ATT_USER_PROPERTY = "user-property";
static final String ATT_SYSTEM_WIDE = "system-wide"; static final String ATT_SYSTEM_WIDE = "system-wide";
public BeanDefinition parse(Element element, ParserContext parserContext) { public BeanDefinition parse(Element element, ParserContext parserContext) {
BeanDefinition saltSource; RootBeanDefinition saltSource;
String userProperty = element.getAttribute(ATT_USER_PROPERTY); String userProperty = element.getAttribute(ATT_USER_PROPERTY);
if (StringUtils.hasText(userProperty)) { if (StringUtils.hasText(userProperty)) {
saltSource = new RootBeanDefinition(ReflectionSaltSource.class); saltSource = new RootBeanDefinition(ReflectionSaltSource.class);
saltSource.getPropertyValues().addPropertyValue("userPropertyToUse", userProperty); saltSource.getPropertyValues().addPropertyValue("userPropertyToUse", userProperty);
saltSource.setSource(parserContext.extractSource(element));
return saltSource; return saltSource;
} }
@ -34,10 +36,12 @@ public class SaltSourceBeanDefinitionParser implements BeanDefinitionParser {
if (StringUtils.hasText(systemWideSalt)) { if (StringUtils.hasText(systemWideSalt)) {
saltSource = new RootBeanDefinition(SystemWideSaltSource.class); saltSource = new RootBeanDefinition(SystemWideSaltSource.class);
saltSource.getPropertyValues().addPropertyValue("systemWideSalt", systemWideSalt); saltSource.getPropertyValues().addPropertyValue("systemWideSalt", systemWideSalt);
saltSource.setSource(parserContext.extractSource(element));
return saltSource; return saltSource;
} }
throw new SecurityConfigurationException(Elements.SALT_SOURCE + " requires an attribute"); parserContext.getReaderContext().error(Elements.SALT_SOURCE + " requires an attribute", element);
return null;
} }
} }

View File

@ -32,6 +32,10 @@ public class X509BeanDefinitionParser implements BeanDefinitionParser {
BeanDefinitionBuilder filterBuilder = BeanDefinitionBuilder.rootBeanDefinition(X509PreAuthenticatedProcessingFilter.class); BeanDefinitionBuilder filterBuilder = BeanDefinitionBuilder.rootBeanDefinition(X509PreAuthenticatedProcessingFilter.class);
RootBeanDefinition entryPoint = new RootBeanDefinition(PreAuthenticatedProcessingFilterEntryPoint.class); RootBeanDefinition entryPoint = new RootBeanDefinition(PreAuthenticatedProcessingFilterEntryPoint.class);
Object source = parserContext.extractSource(element);
filterBuilder.setSource(source);
entryPoint.setSource(source);
String regex = element.getAttribute(ATT_REGEX); String regex = element.getAttribute(ATT_REGEX);
if (StringUtils.hasText(regex)) { if (StringUtils.hasText(regex)) {
@ -49,8 +53,10 @@ public class X509BeanDefinitionParser implements BeanDefinitionParser {
if (StringUtils.hasText(userServiceRef)) { if (StringUtils.hasText(userServiceRef)) {
RootBeanDefinition statusCheckingUserService = new RootBeanDefinition(StatusCheckingUserDetailsService.class); RootBeanDefinition statusCheckingUserService = new RootBeanDefinition(StatusCheckingUserDetailsService.class);
statusCheckingUserService.setSource(source);
statusCheckingUserService.getConstructorArgumentValues().addIndexedArgumentValue(0, new RuntimeBeanReference(userServiceRef)); statusCheckingUserService.getConstructorArgumentValues().addIndexedArgumentValue(0, new RuntimeBeanReference(userServiceRef));
BeanDefinition preAuthUserService = new RootBeanDefinition(UserDetailsByNameServiceWrapper.class); RootBeanDefinition preAuthUserService = new RootBeanDefinition(UserDetailsByNameServiceWrapper.class);
preAuthUserService.setSource(source);
preAuthUserService.getPropertyValues().addPropertyValue("userDetailsService", statusCheckingUserService); preAuthUserService.getPropertyValues().addPropertyValue("userDetailsService", statusCheckingUserService);
provider.getPropertyValues().addPropertyValue("preAuthenticatedUserDetailsService", preAuthUserService); provider.getPropertyValues().addPropertyValue("preAuthenticatedUserDetailsService", preAuthUserService);
} }