keycloak-uncached

Details

diff --git a/services/src/main/java/org/keycloak/authentication/actiontoken/AbstractActionTokenHander.java b/services/src/main/java/org/keycloak/authentication/actiontoken/AbstractActionTokenHander.java
index 06e2b53..0fb41d0 100644
--- a/services/src/main/java/org/keycloak/authentication/actiontoken/AbstractActionTokenHander.java
+++ b/services/src/main/java/org/keycloak/authentication/actiontoken/AbstractActionTokenHander.java
@@ -87,7 +87,7 @@ public abstract class AbstractActionTokenHander<T extends JsonWebToken> implemen
     }
 
     @Override
-    public String getAuthenticationSessionIdFromToken(T token, ActionTokenContext<T> tokenContext) {
+    public String getAuthenticationSessionIdFromToken(T token, ActionTokenContext<T> tokenContext, AuthenticationSessionModel currentAuthSession) {
         return token instanceof DefaultActionToken ? ((DefaultActionToken) token).getCompoundAuthenticationSessionId() : null;
     }
 
diff --git a/services/src/main/java/org/keycloak/authentication/actiontoken/ActionTokenHandler.java b/services/src/main/java/org/keycloak/authentication/actiontoken/ActionTokenHandler.java
index 4f98070..6bb34f7 100644
--- a/services/src/main/java/org/keycloak/authentication/actiontoken/ActionTokenHandler.java
+++ b/services/src/main/java/org/keycloak/authentication/actiontoken/ActionTokenHandler.java
@@ -22,6 +22,7 @@ import org.keycloak.events.EventBuilder;
 import org.keycloak.events.EventType;
 import org.keycloak.provider.Provider;
 import org.keycloak.representations.JsonWebToken;
+import org.keycloak.sessions.AuthenticationSessionCompoundId;
 import org.keycloak.sessions.AuthenticationSessionModel;
 import javax.ws.rs.core.Response;
 
@@ -61,11 +62,14 @@ public interface ActionTokenHandler<T extends JsonWebToken> extends Provider {
     }
 
     /**
-     * Returns an authentication session ID requested from within the given token
+     * Returns a compound authentication session ID requested from within the given token that the handler should attempt to join.
      * @param token Token. Can be {@code null}
-     * @return authentication session ID
+     * @param tokenContext
+     * @param currentAuthSession Authentication session that is currently in progress, {@code null} if no authentication session is not set
+     * @see AuthenticationSessionCompoundId
+     * @return Authentication session ID (can be {@code null} if the token does not contain authentication session ID)
      */
-    String getAuthenticationSessionIdFromToken(T token, ActionTokenContext<T> tokenContext);
+    String getAuthenticationSessionIdFromToken(T token, ActionTokenContext<T> tokenContext, AuthenticationSessionModel currentAuthSession);
 
     /**
      * Returns a event type logged with {@link EventBuilder} class.
diff --git a/services/src/main/java/org/keycloak/services/resources/LoginActionsService.java b/services/src/main/java/org/keycloak/services/resources/LoginActionsService.java
index e552885..87711c7 100755
--- a/services/src/main/java/org/keycloak/services/resources/LoginActionsService.java
+++ b/services/src/main/java/org/keycloak/services/resources/LoginActionsService.java
@@ -503,7 +503,7 @@ public class LoginActionsService {
         tokenContext = new ActionTokenContext(session, realm, uriInfo, clientConnection, request, event, handler, execution, this::processFlow, this::brokerLoginFlow);
 
         try {
-            String tokenAuthSessionCompoundId = handler.getAuthenticationSessionIdFromToken(token, tokenContext);
+            String tokenAuthSessionCompoundId = handler.getAuthenticationSessionIdFromToken(token, tokenContext, authSession);
 
             if (tokenAuthSessionCompoundId != null) {
                 // This can happen if the token contains ID but user opens the link in a new browser