Переглянути джерело

SEC-581: Copy authentication details to CAS result token

Luke Taylor 17 роки тому
батько
коміт
985818ae2c

+ 2 - 2
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());
 

+ 4 - 0
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...