[java-identity-provider] branch main updated: Collapse SPSessionEx interface back into main API.

Scott Cantor cantor.2 at osu.edu
Wed Jun 1 17:56:21 UTC 2022


This is an automated email from the git hooks/post-receive script.

scantor pushed a commit to branch main
in repository java-identity-provider.

View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=47b805a2f36170aba222164560c8fb10b05ad537

The following commit(s) were added to refs/heads/main by this push:
     new 47b805a2f Collapse SPSessionEx interface back into main API.
47b805a2f is described below

commit 47b805a2f36170aba222164560c8fb10b05ad537
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed Jun 1 13:56:17 2022 -0400

    Collapse SPSessionEx interface back into main API.
---
 .../idp/cas/session/impl/CASSPSession.java         |  5 +-
 .../idp/saml/session/SAML1SPSession.java           |  5 +-
 .../idp/saml/session/SAML2SPSession.java           | 23 +---------
 .../profile/impl/ProcessLogoutRequestTest.java     | 24 +++++-----
 .../net/shibboleth/idp/session/BasicSPSession.java | 10 ++++
 .../session/LogoutPropagationFlowDescriptor.java   |  7 +--
 .../java/net/shibboleth/idp/session/SPSession.java | 20 ++++++++
 .../net/shibboleth/idp/session/SPSessionEx.java    | 53 ----------------------
 .../PopulateMultiRPContextFromLogoutContext.java   | 10 ++--
 9 files changed, 53 insertions(+), 104 deletions(-)

diff --git a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/session/impl/CASSPSession.java b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/session/impl/CASSPSession.java
index 30ce273f5..17063188b 100644
--- a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/session/impl/CASSPSession.java
+++ b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/session/impl/CASSPSession.java
@@ -24,7 +24,6 @@ import javax.annotation.Nullable;
 
 import net.shibboleth.idp.cas.config.AbstractProtocolConfiguration;
 import net.shibboleth.idp.session.BasicSPSession;
-import net.shibboleth.idp.session.SPSessionEx;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
@@ -34,8 +33,7 @@ import net.shibboleth.utilities.java.support.primitive.StringSupport;
  *
  * @author Marvin S. Addison
  */
- at SuppressWarnings("removal")
-public class CASSPSession extends BasicSPSession implements SPSessionEx {
+public class CASSPSession extends BasicSPSession {
 
     /** Validated ticket that started the SP session. */
     @Nonnull @NotEmpty private final String ticket;
@@ -73,6 +71,7 @@ public class CASSPSession extends BasicSPSession implements SPSessionEx {
     }
 
     /** {@inheritDoc} */
+    @Override
     @Nullable @NotEmpty public String getProtocol() {
         return AbstractProtocolConfiguration.PROTOCOL_URI;
     }
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/session/SAML1SPSession.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/session/SAML1SPSession.java
index 8df32672d..bbd05e72e 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/session/SAML1SPSession.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/session/SAML1SPSession.java
@@ -25,15 +25,13 @@ import javax.annotation.Nullable;
 import org.opensaml.saml.common.xml.SAMLConstants;
 
 import net.shibboleth.idp.session.BasicSPSession;
-import net.shibboleth.idp.session.SPSessionEx;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 
 /**
  * Marker subtype for a SAML 1 session, adds no actual information other than its identity as
  * a SAML 1 session. 
  */
- at SuppressWarnings("removal")
-public class SAML1SPSession extends BasicSPSession implements SPSessionEx {
+public class SAML1SPSession extends BasicSPSession {
     
     /**
      * Constructor.
@@ -48,6 +46,7 @@ public class SAML1SPSession extends BasicSPSession implements SPSessionEx {
     }
 
     /** {@inheritDoc} */
+    @Override
     @Nullable @NotEmpty public String getProtocol() {
         return SAMLConstants.SAML11P_NS;
     }
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/session/SAML2SPSession.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/session/SAML2SPSession.java
index ac96d3385..a7c243cef 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/session/SAML2SPSession.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/session/SAML2SPSession.java
@@ -32,7 +32,6 @@ import org.opensaml.saml.saml2.profile.SAML2ObjectSupport;
 import com.google.common.base.MoreObjects;
 
 import net.shibboleth.idp.session.BasicSPSession;
-import net.shibboleth.idp.session.SPSessionEx;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
@@ -42,8 +41,7 @@ import net.shibboleth.utilities.java.support.xml.SerializeSupport;
  * Extends a {@link BasicSPSession} with SAML 2.0 information required for
  * reverse lookup in the case of a logout. 
  */
- at SuppressWarnings("removal")
-public class SAML2SPSession extends BasicSPSession implements SPSessionEx {
+public class SAML2SPSession extends BasicSPSession {
 
     /** The NameID asserted to the SP. */
     @Nonnull private final NameID nameID;
@@ -58,24 +56,6 @@ public class SAML2SPSession extends BasicSPSession implements SPSessionEx {
     private final boolean supportsLogoutPropagation;
     
 // Checkstyle: ParameterNumber OFF
-    /**
-     * Constructor.
-     *
-     * @param id the identifier of the service associated with this session
-     * @param creation creation time of session
-     * @param expiration expiration time of session
-     * @param assertedNameID the NameID asserted to the SP
-     * @param assertedIndex the SessionIndex asserted to the SP
-     * 
-     * @deprecated
-     */
-    @Deprecated(since="4.2.0", forRemoval=true)
-    public SAML2SPSession(@Nonnull @NotEmpty final String id, @Nonnull final Instant creation,
-            @Nonnull final Instant expiration, @Nonnull final NameID assertedNameID,
-            @Nonnull @NotEmpty final String assertedIndex) {
-        this(id, creation, expiration, assertedNameID, assertedIndex, null, true);
-    }
-
     /**
      * Constructor.
      *
@@ -126,6 +106,7 @@ public class SAML2SPSession extends BasicSPSession implements SPSessionEx {
     }
 
     /** {@inheritDoc} */
+    @Override
     @Nullable @NotEmpty public String getProtocol() {
         return SAMLConstants.SAML20P_NS;
     }
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessLogoutRequestTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessLogoutRequestTest.java
index 7b9c4970e..6ebdf1cbe 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessLogoutRequestTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessLogoutRequestTest.java
@@ -171,7 +171,7 @@ public class ProcessLogoutRequestTest extends SessionManagerBaseTestCase {
         final IdPSession session = sessionManager.resolveSingle(new CriteriaSet(new HttpServletRequestCriterion()));
         Assert.assertNotNull(session);
         session.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER, creation, expiration,
-                nameIdForSession, "index"));
+                nameIdForSession, "index", "foo", false));
                 
         final Event event = action.execute(src);
         ActionTestingSupport.assertEvent(event, SAMLEventIds.SESSION_NOT_FOUND);
@@ -200,7 +200,7 @@ public class ProcessLogoutRequestTest extends SessionManagerBaseTestCase {
         Assert.assertNotNull(session);
         final NameID nameIdForSession = SAML2ActionTestingSupport.buildNameID("joe");
         session.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER, creation, expiration,
-                nameIdForSession, "index"));
+                nameIdForSession, "index", "foo", false));
                 
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
@@ -239,7 +239,7 @@ public class ProcessLogoutRequestTest extends SessionManagerBaseTestCase {
         nameIdForSession.setNameQualifier(ActionTestingSupport.OUTBOUND_MSG_ISSUER);
         nameIdForSession.setSPNameQualifier(ActionTestingSupport.INBOUND_MSG_ISSUER);
         session.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER, creation, expiration,
-                nameIdForSession, "index"));
+                nameIdForSession, "index", "foo", false));
                 
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
@@ -275,7 +275,7 @@ public class ProcessLogoutRequestTest extends SessionManagerBaseTestCase {
         final IdPSession session = sessionManager.resolveSingle(new CriteriaSet(new HttpServletRequestCriterion()));
         Assert.assertNotNull(session);
         session.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER, creation, expiration,
-                nameId, "index"));
+                nameId, "index", "foo", false));
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
@@ -312,9 +312,9 @@ public class ProcessLogoutRequestTest extends SessionManagerBaseTestCase {
         final IdPSession session = sessionManager.resolveSingle(new CriteriaSet(new HttpServletRequestCriterion()));
         Assert.assertNotNull(session);
         session.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER, creation, expiration,
-                nameId, "index"));
+                nameId, "index", "foo", false));
         session.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER + "/2", creation, expiration,
-                nameId2, "index2"));
+                nameId2, "index2", "foo", false));
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
@@ -358,9 +358,9 @@ public class ProcessLogoutRequestTest extends SessionManagerBaseTestCase {
         final IdPSession session = sessionManager.resolveSingle(new CriteriaSet(new HttpServletRequestCriterion()));
         Assert.assertNotNull(session);
         session.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER, creation, expiration,
-                nameId, "index"));
+                nameId, "index", "foo", false));
         session.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER + "/2", creation, expiration,
-                nameId2, "index2"));
+                nameId2, "index2", "foo", false));
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertEvent(event, SAMLEventIds.SESSION_NOT_FOUND);
@@ -390,7 +390,7 @@ public class ProcessLogoutRequestTest extends SessionManagerBaseTestCase {
         final IdPSession session = sessionManager.resolveSingle(new CriteriaSet(new HttpServletRequestCriterion()));
         Assert.assertNotNull(session);
         session.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER, creation, expiration,
-                nameId, "index"));
+                nameId, "index", "foo", false));
         
         
         ((MockHttpServletRequest) HttpServletRequestResponseContext.getRequest()).setCookies(cookie2);
@@ -398,7 +398,7 @@ public class ProcessLogoutRequestTest extends SessionManagerBaseTestCase {
         final IdPSession session2 = sessionManager.resolveSingle(new CriteriaSet(new HttpServletRequestCriterion()));
         Assert.assertNotNull(session2);
         session2.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER, creation, expiration,
-                nameId, "index2"));
+                nameId, "index2", "foo", false));
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
@@ -436,7 +436,7 @@ public class ProcessLogoutRequestTest extends SessionManagerBaseTestCase {
         final IdPSession session = sessionManager.resolveSingle(new CriteriaSet(new HttpServletRequestCriterion()));
         Assert.assertNotNull(session);
         session.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER, creation, expiration,
-                nameId, "index"));
+                nameId, "index", "foo", false));
         
         
         ((MockHttpServletRequest) HttpServletRequestResponseContext.getRequest()).setCookies(cookie2);
@@ -444,7 +444,7 @@ public class ProcessLogoutRequestTest extends SessionManagerBaseTestCase {
         final IdPSession session2 = sessionManager.resolveSingle(new CriteriaSet(new HttpServletRequestCriterion()));
         Assert.assertNotNull(session2);
         session2.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER, creation, expiration,
-                nameId, "index2"));
+                nameId, "index2", "foo", false));
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
diff --git a/idp-session-api/src/main/java/net/shibboleth/idp/session/BasicSPSession.java b/idp-session-api/src/main/java/net/shibboleth/idp/session/BasicSPSession.java
index c127aaae3..af434c326 100644
--- a/idp-session-api/src/main/java/net/shibboleth/idp/session/BasicSPSession.java
+++ b/idp-session-api/src/main/java/net/shibboleth/idp/session/BasicSPSession.java
@@ -80,6 +80,16 @@ public class BasicSPSession implements SPSession {
         return null;
     }
     
+    /** {@inheritDoc} */
+    @Nullable @NotEmpty public String getProtocol() {
+        return null;
+    }
+
+    /** {@inheritDoc} */
+    public boolean supportsLogoutPropagation() {
+        return false;
+    }
+    
     /** {@inheritDoc} */
     public int hashCode() {
         return serviceId.hashCode();
diff --git a/idp-session-api/src/main/java/net/shibboleth/idp/session/LogoutPropagationFlowDescriptor.java b/idp-session-api/src/main/java/net/shibboleth/idp/session/LogoutPropagationFlowDescriptor.java
index d5db0c615..6bdae8c89 100644
--- a/idp-session-api/src/main/java/net/shibboleth/idp/session/LogoutPropagationFlowDescriptor.java
+++ b/idp-session-api/src/main/java/net/shibboleth/idp/session/LogoutPropagationFlowDescriptor.java
@@ -64,14 +64,9 @@ public class LogoutPropagationFlowDescriptor extends AbstractIdentifiableInitial
      * 
      * @return true iff this flow should be used to propagate a logout to the corresponding SP
      */
-    @SuppressWarnings("removal")
     public boolean isSupported(@Nonnull final SPSession session) {
         if (sessionType.isInstance(session)) {
-            if (session instanceof SPSessionEx) {
-                return ((SPSessionEx) session).supportsLogoutPropagation();
-            }
-            
-            return true;
+            return session.supportsLogoutPropagation();
         }
         
         return false;
diff --git a/idp-session-api/src/main/java/net/shibboleth/idp/session/SPSession.java b/idp-session-api/src/main/java/net/shibboleth/idp/session/SPSession.java
index 122985492..ef7739c35 100644
--- a/idp-session-api/src/main/java/net/shibboleth/idp/session/SPSession.java
+++ b/idp-session-api/src/main/java/net/shibboleth/idp/session/SPSession.java
@@ -23,6 +23,7 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.ThreadSafe;
 
+import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.component.IdentifiedComponent;
 
 /**
@@ -59,4 +60,23 @@ public interface SPSession extends IdentifiedComponent {
      * @return a unique key identifying this subject's session with the service, or null
      */
     @Nullable String getSPSessionKey();
+
+    /**
+     * Get a protocol constant for the session suitable for metadata lookup.
+     *
+     * @return a protocol constant
+     * 
+     * @since 5.0.0
+     */
+    @Nullable @NotEmpty String getProtocol();
+    
+    /**
+     * Gets whether the session allows for logout propagation.
+     * 
+     * @return whether the session allows for logout propagation
+     * 
+     * @since 5.0.0
+     */
+    boolean supportsLogoutPropagation();
+
 }
\ No newline at end of file
diff --git a/idp-session-api/src/main/java/net/shibboleth/idp/session/SPSessionEx.java b/idp-session-api/src/main/java/net/shibboleth/idp/session/SPSessionEx.java
deleted file mode 100644
index 86c436620..000000000
--- a/idp-session-api/src/main/java/net/shibboleth/idp/session/SPSessionEx.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package net.shibboleth.idp.session;
-
-import javax.annotation.Nullable;
-
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-
-/**
- * Temporary extension of {@link SPSession} to add protocol access.
- * 
- * TODO: remove in V5
- * 
- * @since 4.1.0
- * @deprecated
- */
- at Deprecated(since="4.1.0", forRemoval=true)
-public interface SPSessionEx extends SPSession {
-
-    /**
-     * Get a prototocol constant for the session suitable for metadata lookup.
-     *
-     * @return a protocol constant
-     */
-    @Nullable @NotEmpty String getProtocol();
-    
-    /**
-     * Gets whether the session allows for logout propagation.
-     * 
-     * @return whether the session allows for logout propagation
-     * 
-     * @since 4.2.0
-     */
-    default boolean supportsLogoutPropagation() {
-        return false;
-    }
-    
-}
\ No newline at end of file
diff --git a/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/PopulateMultiRPContextFromLogoutContext.java b/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/PopulateMultiRPContextFromLogoutContext.java
index da6421528..629525f3c 100644
--- a/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/PopulateMultiRPContextFromLogoutContext.java
+++ b/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/PopulateMultiRPContextFromLogoutContext.java
@@ -27,7 +27,6 @@ import net.shibboleth.idp.profile.AbstractProfileAction;
 import net.shibboleth.idp.profile.context.MultiRelyingPartyContext;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.session.SPSession;
-import net.shibboleth.idp.session.SPSessionEx;
 import net.shibboleth.idp.session.context.LogoutContext;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
@@ -61,7 +60,6 @@ import org.slf4j.LoggerFactory;
  * @post If (ProfileRequestContext.getSubcontext(LogoutContext.class) != null,
  *  then ProfileRequestContext.getSubcontext(MultiRelyingPartyContext.class) != null
  */
- at SuppressWarnings("removal")
 public class PopulateMultiRPContextFromLogoutContext extends AbstractProfileAction {
     
     /** Label for {@link MultiRelyingPartyContext} entries. */
@@ -166,9 +164,8 @@ public class PopulateMultiRPContextFromLogoutContext extends AbstractProfileActi
             
             ProtocolCriterion protocolCriterion = null;
             final SPSession spSession = logoutCtx.getSessions(relyingPartyId).iterator().next();
-            final String protocol = spSession instanceof SPSessionEx ? ((SPSessionEx) spSession).getProtocol() : null;
-            if (protocol != null) {
-                protocolCriterion = new ProtocolCriterion(protocol);
+            if (spSession.getProtocol() != null) {
+                protocolCriterion = new ProtocolCriterion(spSession.getProtocol());
             }
             
             final CriteriaSet criteria = new CriteriaSet(entityIdCriterion, protocolCriterion, roleCriterion);
@@ -177,7 +174,8 @@ public class PopulateMultiRPContextFromLogoutContext extends AbstractProfileActi
                 if (roleMetadata == null) {
                     if (protocolCriterion != null) {
                         log.info("{} No metadata returned for {} in role {} with protocol {}",
-                                new Object[]{getLogPrefix(), entityIdCriterion.getEntityId(), role, protocol,});
+                                new Object[]{getLogPrefix(), entityIdCriterion.getEntityId(), role,
+                                        spSession.getProtocol(),});
                     } else {
                         log.info("{} No metadata returned for {} in role {}",
                                 new Object[]{getLogPrefix(), entityIdCriterion.getEntityId(), role,});

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list