@ -18,6 +18,7 @@ package org.springframework.security.cas.authentication;
import java.util.HashMap ;
import java.util.HashMap ;
import java.util.Map ;
import java.util.Map ;
import java.util.concurrent.atomic.AtomicInteger ;
import org.apereo.cas.client.validation.Assertion ;
import org.apereo.cas.client.validation.Assertion ;
import org.apereo.cas.client.validation.AssertionImpl ;
import org.apereo.cas.client.validation.AssertionImpl ;
@ -31,11 +32,13 @@ import org.springframework.security.authentication.UsernamePasswordAuthenticatio
import org.springframework.security.cas.ServiceProperties ;
import org.springframework.security.cas.ServiceProperties ;
import org.springframework.security.cas.web.authentication.ServiceAuthenticationDetails ;
import org.springframework.security.cas.web.authentication.ServiceAuthenticationDetails ;
import org.springframework.security.core.Authentication ;
import org.springframework.security.core.Authentication ;
import org.springframework.security.core.AuthenticationException ;
import org.springframework.security.core.authority.AuthorityUtils ;
import org.springframework.security.core.authority.AuthorityUtils ;
import org.springframework.security.core.authority.SimpleGrantedAuthority ;
import org.springframework.security.core.authority.SimpleGrantedAuthority ;
import org.springframework.security.core.userdetails.AuthenticationUserDetailsService ;
import org.springframework.security.core.userdetails.AuthenticationUserDetailsService ;
import org.springframework.security.core.userdetails.User ;
import org.springframework.security.core.userdetails.User ;
import org.springframework.security.core.userdetails.UserDetails ;
import org.springframework.security.core.userdetails.UserDetails ;
import org.springframework.security.core.userdetails.UserDetailsChecker ;
import org.springframework.security.core.userdetails.UsernameNotFoundException ;
import org.springframework.security.core.userdetails.UsernameNotFoundException ;
import org.springframework.security.web.authentication.WebAuthenticationDetails ;
import org.springframework.security.web.authentication.WebAuthenticationDetails ;
@ -55,6 +58,7 @@ import static org.mockito.Mockito.verify;
*
*
* @author Ben Alex
* @author Ben Alex
* @author Scott Battaglia
* @author Scott Battaglia
* @author Kim Youngwoong
* /
* /
@SuppressWarnings ( "unchecked" )
@SuppressWarnings ( "unchecked" )
public class CasAuthenticationProviderTests {
public class CasAuthenticationProviderTests {
@ -320,6 +324,29 @@ public class CasAuthenticationProviderTests {
assertThat ( cap . supports ( CasAuthenticationToken . class ) ) . isTrue ( ) ;
assertThat ( cap . supports ( CasAuthenticationToken . class ) ) . isTrue ( ) ;
}
}
@Test
public void testSetUserDetailsChecker ( ) throws AuthenticationException {
CasAuthenticationProvider cap = new CasAuthenticationProvider ( ) ;
cap . setAuthenticationUserDetailsService ( new MockAuthoritiesPopulator ( ) ) ;
cap . setKey ( "qwerty" ) ;
cap . setTicketValidator ( new MockTicketValidator ( true ) ) ;
cap . setServiceProperties ( makeServiceProperties ( ) ) ;
cap . afterPropertiesSet ( ) ;
CasServiceTicketAuthenticationToken token = CasServiceTicketAuthenticationToken . stateful ( "ST-123" ) ;
AtomicInteger checkCount = new AtomicInteger ( 0 ) ;
UserDetailsChecker userDetailsChecker = new UserDetailsChecker ( ) {
@Override
public void check ( UserDetails user ) {
checkCount . incrementAndGet ( ) ;
}
} ;
cap . setUserDetailsChecker ( userDetailsChecker ) ;
cap . authenticate ( token ) ;
assertThat ( checkCount . get ( ) ) . isEqualTo ( 1 ) ;
}
private class MockAuthoritiesPopulator implements AuthenticationUserDetailsService {
private class MockAuthoritiesPopulator implements AuthenticationUserDetailsService {
@Override
@Override