mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-06-29 15:22:15 +00:00
Converted test class to use in memory XML snippets - makes it easier to work out which one is causing a failure.
This commit is contained in:
parent
ca8dff7abb
commit
b29bcfebe8
@ -3,47 +3,100 @@ package org.springframework.security.config;
|
|||||||
import org.springframework.security.providers.ProviderManager;
|
import org.springframework.security.providers.ProviderManager;
|
||||||
import org.springframework.security.providers.UsernamePasswordAuthenticationToken;
|
import org.springframework.security.providers.UsernamePasswordAuthenticationToken;
|
||||||
import org.springframework.security.providers.AuthenticationProvider;
|
import org.springframework.security.providers.AuthenticationProvider;
|
||||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
import org.springframework.security.util.InMemoryXmlApplicationContext;
|
||||||
import org.springframework.beans.BeansException;
|
import org.springframework.context.support.AbstractXmlApplicationContext;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
|
||||||
import org.junit.AfterClass;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.junit.After;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Tests for {@link AuthenticationProviderBeanDefinitionParser}.
|
||||||
|
*
|
||||||
* @author Luke Taylor
|
* @author Luke Taylor
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class AuthenticationProviderBeanDefinitionParserTests {
|
public class AuthenticationProviderBeanDefinitionParserTests {
|
||||||
private static ClassPathXmlApplicationContext appContext;
|
private AbstractXmlApplicationContext appContext;
|
||||||
|
private UsernamePasswordAuthenticationToken bob = new UsernamePasswordAuthenticationToken("bob", "bobspassword");
|
||||||
|
|
||||||
@BeforeClass
|
@After
|
||||||
public static void loadContext() {
|
public void closeAppContext() {
|
||||||
try {
|
|
||||||
appContext = new ClassPathXmlApplicationContext("org/springframework/security/config/auth-provider.xml");
|
|
||||||
} catch (BeansException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterClass
|
|
||||||
public static void closeAppContext() {
|
|
||||||
if (appContext != null) {
|
if (appContext != null) {
|
||||||
appContext.close();
|
appContext.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void configuredProvidersAllAuthenticateUser() {
|
public void worksWithEmbeddedUserService() {
|
||||||
|
setContext(" <authentication-provider>" +
|
||||||
|
" <user-service>" +
|
||||||
|
" <user name='bob' password='bobspassword' authorities='ROLE_A' />" +
|
||||||
|
" </user-service>" +
|
||||||
|
" </authentication-provider>");
|
||||||
|
getProvider().authenticate(bob);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void externalUserServiceRefWorks() throws Exception {
|
||||||
|
setContext(" <authentication-provider user-service-ref='myUserService' />" +
|
||||||
|
" <user-service id='myUserService'>" +
|
||||||
|
" <user name='bob' password='bobspassword' authorities='ROLE_A' />" +
|
||||||
|
" </user-service>");
|
||||||
|
getProvider().authenticate(bob);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void providerWithMd5PasswordEncoderWorks() throws Exception {
|
||||||
|
setContext(" <authentication-provider>" +
|
||||||
|
" <password-encoder hash='md5'/>" +
|
||||||
|
" <user-service>" +
|
||||||
|
" <user name='bob' password='12b141f35d58b8b3a46eea65e6ac179e' authorities='ROLE_A' />" +
|
||||||
|
" </user-service>" +
|
||||||
|
" </authentication-provider>");
|
||||||
|
|
||||||
|
getProvider().authenticate(bob);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void providerWithShaPasswordEncoderWorks() throws Exception {
|
||||||
|
setContext(" <authentication-provider>" +
|
||||||
|
" <password-encoder hash='{sha}'/>" +
|
||||||
|
" <user-service>" +
|
||||||
|
" <user name='bob' password='{SSHA}PpuEwfdj7M1rs0C2W4ssSM2XEN/Y6S5U' authorities='ROLE_A' />" +
|
||||||
|
" </user-service>" +
|
||||||
|
" </authentication-provider>");
|
||||||
|
|
||||||
|
getProvider().authenticate(bob);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void externalUserServiceAndPasswordEncoderWork() throws Exception {
|
||||||
|
setContext(" <authentication-provider user-service-ref='customUserService'>" +
|
||||||
|
" <password-encoder ref='customPasswordEncoder'>" +
|
||||||
|
" <salt-source user-property='username'/>" +
|
||||||
|
" </password-encoder>" +
|
||||||
|
" </authentication-provider>" +
|
||||||
|
|
||||||
|
" <b:bean id='customPasswordEncoder' " +
|
||||||
|
"class='org.springframework.security.providers.encoding.Md5PasswordEncoder'/>" +
|
||||||
|
|
||||||
|
" <b:bean id='customUserService' " +
|
||||||
|
" class='org.springframework.security.userdetails.memory.InMemoryDaoImpl'>" +
|
||||||
|
" <b:property name='userMap' value='bob=f117f0862384e9497ff4f470e3522606,ROLE_A'/>" +
|
||||||
|
" </b:bean>");
|
||||||
|
getProvider().authenticate(bob);
|
||||||
|
}
|
||||||
|
|
||||||
|
private AuthenticationProvider getProvider() {
|
||||||
List<AuthenticationProvider> providers =
|
List<AuthenticationProvider> providers =
|
||||||
((ProviderManager)appContext.getBean(BeanIds.AUTHENTICATION_MANAGER)).getProviders();
|
((ProviderManager)appContext.getBean(BeanIds.AUTHENTICATION_MANAGER)).getProviders();
|
||||||
|
|
||||||
UsernamePasswordAuthenticationToken bob = new UsernamePasswordAuthenticationToken("bob", "bobspassword");
|
return providers.get(0);
|
||||||
|
}
|
||||||
|
|
||||||
for (AuthenticationProvider provider : providers) {
|
private void setContext(String context) {
|
||||||
provider.authenticate(bob);
|
appContext = new InMemoryXmlApplicationContext(context);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<beans:beans xmlns="http://www.springframework.org/schema/security"
|
|
||||||
xmlns:beans="http://www.springframework.org/schema/beans"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
|
|
||||||
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.xsd">
|
|
||||||
|
|
||||||
<!-- All combinations should authenticate as bob/bobspassword -->
|
|
||||||
|
|
||||||
<authentication-provider>
|
|
||||||
<user-service>
|
|
||||||
<user name="bob" password="bobspassword" authorities="ROLE_A" />
|
|
||||||
</user-service>
|
|
||||||
</authentication-provider>
|
|
||||||
|
|
||||||
<authentication-provider user-service-ref="myUserService" />
|
|
||||||
|
|
||||||
<user-service id="myUserService">
|
|
||||||
<user name="bob" password="bobspassword" authorities="ROLE_A" />
|
|
||||||
</user-service>
|
|
||||||
|
|
||||||
<authentication-provider>
|
|
||||||
<password-encoder hash="md5"/>
|
|
||||||
<user-service>
|
|
||||||
<user name="bob" password="12b141f35d58b8b3a46eea65e6ac179e" authorities="ROLE_A" />
|
|
||||||
</user-service>
|
|
||||||
</authentication-provider>
|
|
||||||
|
|
||||||
<authentication-provider>
|
|
||||||
<password-encoder hash="{sha}"/>
|
|
||||||
<user-service>
|
|
||||||
<user name="bob" password="{SSHA}PpuEwfdj7M1rs0C2W4ssSM2XEN/Y6S5U" authorities="ROLE_A" />
|
|
||||||
</user-service>
|
|
||||||
</authentication-provider>
|
|
||||||
|
|
||||||
<!-- External beans for both UserDetailsService and PasswordEncoder -->
|
|
||||||
<authentication-provider user-service-ref="customUserService">
|
|
||||||
<password-encoder ref="customPasswordEncoder">
|
|
||||||
<salt-source user-property="username"/>
|
|
||||||
</password-encoder>
|
|
||||||
</authentication-provider>
|
|
||||||
|
|
||||||
<beans:bean id="customPasswordEncoder" class="org.springframework.security.providers.encoding.Md5PasswordEncoder"/>
|
|
||||||
|
|
||||||
<beans:bean id="customUserService" class="org.springframework.security.userdetails.memory.InMemoryDaoImpl">
|
|
||||||
<beans:property name="userMap" value="bob=f117f0862384e9497ff4f470e3522606,ROLE_A"/>
|
|
||||||
</beans:bean>
|
|
||||||
|
|
||||||
</beans:beans>
|
|
Loading…
x
Reference in New Issue
Block a user