mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-06-16 00:52:12 +00:00
SEC-2531: AuthenticationConfiguration#lazyBean should use BeanClassLoader
This commit is contained in:
parent
d7a2c0a98c
commit
a18265a163
@ -113,6 +113,7 @@ public class AuthenticationConfiguration {
|
|||||||
lazyTargetSource.setTargetBeanName(beanNamesForType[0]);
|
lazyTargetSource.setTargetBeanName(beanNamesForType[0]);
|
||||||
lazyTargetSource.setBeanFactory(applicationContext);
|
lazyTargetSource.setBeanFactory(applicationContext);
|
||||||
ProxyFactoryBean proxyFactory = new ProxyFactoryBean();
|
ProxyFactoryBean proxyFactory = new ProxyFactoryBean();
|
||||||
|
proxyFactory = objectPostProcessor.postProcess(proxyFactory);
|
||||||
proxyFactory.setTargetSource(lazyTargetSource);
|
proxyFactory.setTargetSource(lazyTargetSource);
|
||||||
proxyFactory.setInterfaces(new Class[] { interfaceName, LazyBean.class });
|
proxyFactory.setInterfaces(new Class[] { interfaceName, LazyBean.class });
|
||||||
return (T) proxyFactory.getObject();
|
return (T) proxyFactory.getObject();
|
||||||
|
@ -15,7 +15,9 @@
|
|||||||
*/
|
*/
|
||||||
package org.springframework.security.config.annotation.authentication.configuration;
|
package org.springframework.security.config.annotation.authentication.configuration;
|
||||||
|
|
||||||
|
import org.springframework.aop.framework.ProxyFactoryBean
|
||||||
import org.springframework.beans.factory.annotation.Autowired
|
import org.springframework.beans.factory.annotation.Autowired
|
||||||
|
import org.springframework.context.ApplicationContext
|
||||||
import org.springframework.context.annotation.Bean
|
import org.springframework.context.annotation.Bean
|
||||||
import org.springframework.context.annotation.Configuration
|
import org.springframework.context.annotation.Configuration
|
||||||
import org.springframework.context.annotation.Import
|
import org.springframework.context.annotation.Import
|
||||||
@ -25,8 +27,9 @@ import org.springframework.security.access.annotation.Secured
|
|||||||
import org.springframework.security.authentication.AuthenticationManager
|
import org.springframework.security.authentication.AuthenticationManager
|
||||||
import org.springframework.security.authentication.TestingAuthenticationToken
|
import org.springframework.security.authentication.TestingAuthenticationToken
|
||||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken
|
||||||
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
|
import org.springframework.security.authentication.dao.DaoAuthenticationProvider
|
||||||
import org.springframework.security.config.annotation.BaseSpringSpec
|
import org.springframework.security.config.annotation.BaseSpringSpec
|
||||||
|
import org.springframework.security.config.annotation.ObjectPostProcessor
|
||||||
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder
|
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder
|
||||||
import org.springframework.security.config.annotation.authentication.configurers.GlobalAuthenticationConfigurerAdapter
|
import org.springframework.security.config.annotation.authentication.configurers.GlobalAuthenticationConfigurerAdapter
|
||||||
import org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration
|
import org.springframework.security.config.annotation.configuration.ObjectPostProcessorConfiguration
|
||||||
@ -292,4 +295,34 @@ class AuthenticationConfigurationTests extends BaseSpringSpec {
|
|||||||
auth.authenticationProvider(provider)
|
auth.authenticationProvider(provider)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def "SEC-2531: AuthenticationConfiguration#lazyBean should use BeanClassLoader on ProxyFactoryBean"() {
|
||||||
|
setup:
|
||||||
|
ObjectPostProcessor opp = Mock()
|
||||||
|
Sec2531Config. opp = opp
|
||||||
|
loadConfig(Sec2531Config)
|
||||||
|
when:
|
||||||
|
AuthenticationConfiguration config = context.getBean(AuthenticationConfiguration)
|
||||||
|
config.getAuthenticationManager()
|
||||||
|
then:
|
||||||
|
1 * opp.postProcess(_ as ProxyFactoryBean) >> { args ->
|
||||||
|
args[0]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@Import(AuthenticationConfiguration)
|
||||||
|
static class Sec2531Config {
|
||||||
|
static ObjectPostProcessor opp
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public ObjectPostProcessor objectPostProcessor() {
|
||||||
|
opp
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public AuthenticationManager manager() {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user