[java-identity-provider COMMIT] in /trunk: idp-session-api/src/main/java/net/shibboleth/idp/session/context/LogoutPro...

noreply at shibboleth.net noreply at shibboleth.net
Fri Nov 6 15:21:12 EST 2015


Author: serac
Date: Fri Nov  6 15:21:12 2015
New Revision: 7957

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=7957&view=rev
Log:
IDP-224 Add session key to LogoutPropagationContext.

The session key used to index the session in LogoutContext#getKeyedSessionMap
must be available to technology-specific propagation flows, and storing it
in the LPC is an obvious solution.

Modified:
    trunk/idp-session-api/src/main/java/net/shibboleth/idp/session/context/LogoutPropagationContext.java
    trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/PopulateLogoutPropagationContext.java

Modified: trunk/idp-session-api/src/main/java/net/shibboleth/idp/session/context/LogoutPropagationContext.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-session-api/src/main/java/net/shibboleth/idp/session/context/LogoutPropagationContext.java?rev=7957&r1=7956&r2=7957&view=diff
==============================================================================
--- trunk/idp-session-api/src/main/java/net/shibboleth/idp/session/context/LogoutPropagationContext.java	(original)
+++ trunk/idp-session-api/src/main/java/net/shibboleth/idp/session/context/LogoutPropagationContext.java	Fri Nov  6 15:21:12 2015
@@ -43,6 +43,9 @@
     /** SP session to be destroyed. */
     @Nullable private SPSession session;
 
+    /** Session key. */
+    @Nullable private String sessionKey;
+
     /** Result of logout propagation flow. */
     @Nonnull private Result result = Result.Failure;
 
@@ -65,6 +68,24 @@
      */
     public void setSession(@Nullable final SPSession theSession) {
         session = theSession;
+    }
+
+    /**
+     * Gets the key under which the {@link SPSession} was stored in {@link LogoutContext#getKeyedSessionMap()}.
+     *
+     * @return Session key.
+     */
+    @Nullable public String getSessionKey() {
+        return sessionKey;
+    }
+
+    /**
+     * Sets the key under which the {@link SPSession} was stored in {@link LogoutContext#getKeyedSessionMap()}.
+     *
+     * @param key Session key.
+     */
+    public void setSessionKey(final @Nullable String key) {
+        this.sessionKey = key;
     }
 
     /**

Modified: trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/PopulateLogoutPropagationContext.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/PopulateLogoutPropagationContext.java?rev=7957&r1=7956&r2=7957&view=diff
==============================================================================
--- trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/PopulateLogoutPropagationContext.java	(original)
+++ trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/PopulateLogoutPropagationContext.java	Fri Nov  6 15:21:12 2015
@@ -84,7 +84,11 @@
     
     /** {@link SPSession} to operate on. */
     @Nullable private SPSession session;
-    
+
+    /** The value used to look up a session by reference. */
+    @Nullable private String sessionKey;
+
+
     /** Constructor. */
     public PopulateLogoutPropagationContext() {
         contextCreationStrategy = new ChildContextLookup<>(LogoutPropagationContext.class, true);
@@ -156,7 +160,8 @@
         final String sessionVal = requestContext.getRequestParameters().get(SESSION_PARAM_BYVAL);
         try {
             if (sessionRef != null) {
-                session = getSessionByReference(requestContext, sessionRef);
+                sessionKey = sessionRef;
+                session = getSessionByReference(requestContext, sessionKey);
             } else if (sessionVal != null) {
                 session = getSessionByValue(sessionVal);
             } else {
@@ -164,6 +169,7 @@
                 ActionSupport.buildEvent(profileRequestContext, EventIds.UNABLE_TO_DECODE);
                 return false;
             }
+            log.debug("{} Got session to propagate logout: {}", getLogPrefix(), session);
         } catch (MessageDecodingException e) {
             log.warn("{} Message decoding exception: {}", e.getMessage());
             ActionSupport.buildEvent(profileRequestContext, EventIds.UNABLE_TO_DECODE);
@@ -187,6 +193,7 @@
             return;
         }
         logoutPropCtx.setSession(session);
+        logoutPropCtx.setSessionKey(sessionKey);
     }
 
     /**



More information about the commits mailing list