[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