diff --git a/core/src/main/java/org/springframework/security/providers/cas/CasAuthenticationProvider.java b/core/src/main/java/org/springframework/security/providers/cas/CasAuthenticationProvider.java index b2c076501e..7f78d84a47 100644 --- a/core/src/main/java/org/springframework/security/providers/cas/CasAuthenticationProvider.java +++ b/core/src/main/java/org/springframework/security/providers/cas/CasAuthenticationProvider.java @@ -122,6 +122,7 @@ public class CasAuthenticationProvider implements AuthenticationProvider, Initia if (result == null) { result = this.authenticateNow(authentication); + result.setDetails(authentication.getDetails()); } if (stateless) { @@ -132,8 +133,7 @@ public class CasAuthenticationProvider implements AuthenticationProvider, Initia return result; } - private CasAuthenticationToken authenticateNow(Authentication authentication) - throws AuthenticationException { + private CasAuthenticationToken authenticateNow(Authentication authentication) throws AuthenticationException { // Validate TicketResponse response = ticketValidator.confirmTicketValid(authentication.getCredentials().toString()); diff --git a/core/src/test/java/org/springframework/security/providers/cas/CasAuthenticationProviderTests.java b/core/src/test/java/org/springframework/security/providers/cas/CasAuthenticationProviderTests.java index 2b9799f683..c9da5138c5 100644 --- a/core/src/test/java/org/springframework/security/providers/cas/CasAuthenticationProviderTests.java +++ b/core/src/test/java/org/springframework/security/providers/cas/CasAuthenticationProviderTests.java @@ -73,6 +73,7 @@ public class CasAuthenticationProviderTests { UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(CasProcessingFilter.CAS_STATEFUL_IDENTIFIER, "ST-123"); + token.setDetails("details"); Authentication result = cap.authenticate(token); @@ -92,6 +93,7 @@ public class CasAuthenticationProviderTests { assertEquals(new GrantedAuthorityImpl("ROLE_A"), casResult.getAuthorities()[0]); assertEquals(new GrantedAuthorityImpl("ROLE_B"), casResult.getAuthorities()[1]); assertEquals(cap.getKey().hashCode(), casResult.getKeyHash()); + assertEquals("details", casResult.getDetails()); // Now confirm the CasAuthenticationToken is automatically re-accepted. // To ensure TicketValidator not called again, set it to deliver an exception... @@ -115,6 +117,7 @@ public class CasAuthenticationProviderTests { UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(CasProcessingFilter.CAS_STATELESS_IDENTIFIER, "ST-456"); + token.setDetails("details"); Authentication result = cap.authenticate(token); @@ -127,6 +130,7 @@ public class CasAuthenticationProviderTests { assertEquals(makeUserDetailsFromAuthoritiesPopulator(), result.getPrincipal()); assertEquals("ST-456", result.getCredentials()); + assertEquals("details", result.getDetails()); // Now try to authenticate again. To ensure TicketValidator not // called again, set it to deliver an exception...