[java-identity-provider] 02/02: IDP-1793 Use Suppliers for HttpRequest/Response
Rod Widdowson
rdw at steadingsoftware.com
Sun Aug 14 14:58:32 UTC 2022
This is an automated email from the git hooks/post-receive script.
rdw 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=8a0d16a4145327e37a71fe2ff91d6e43148e506b
commit 8a0d16a4145327e37a71fe2ff91d6e43148e506b
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Sat Aug 6 14:34:47 2022 +0100
IDP-1793 Use Suppliers for HttpRequest/Response
https://shibboleth.atlassian.net/browse/IDP-1793
net.shibboleth.idp.session.impl.StorageBackedSessionManager
looses setters for HttpServletRequest and Response and instead
gains setters for Suppliers of same.
---
.../src/test/resources/spring/test-flow-beans.xml | 2 +-
.../shibboleth/idp/conf/session-manager-system.xml | 2 +-
idp-conf/src/test/resources/test/test-cas-beans.xml | 4 ++--
.../IdPInitiatedSSORequestMessageDecoderTest.java | 11 +++++------
.../IdPInitiatedSSORequestMessageDecoderTest.java | 9 ++++-----
.../session/impl/StorageBackedSessionManager.java | 16 ++++++++++------
.../idp/session/impl/DestroySessionsTest.java | 21 ++++++++++-----------
.../impl/StorageBackedIdPSessionSerializerTest.java | 5 +++--
.../impl/testing/SessionManagerBaseTestCase.java | 2 +-
9 files changed, 37 insertions(+), 35 deletions(-)
diff --git a/idp-cas-impl/src/test/resources/spring/test-flow-beans.xml b/idp-cas-impl/src/test/resources/spring/test-flow-beans.xml
index e7d739731..32de351af 100644
--- a/idp-cas-impl/src/test/resources/spring/test-flow-beans.xml
+++ b/idp-cas-impl/src/test/resources/spring/test-flow-beans.xml
@@ -57,7 +57,7 @@
class="net.shibboleth.idp.session.impl.StorageBackedSessionManager"
p:cookieManager-ref="shibboleth.CookieManager"
p:storageService-ref="shibboleth.StorageService"
- p:httpServletRequest-ref="shibboleth.HttpServletRequest"
+ p:httpServletRequestSupplier-ref="shibboleth.HttpServletRequestSupplier"
p:consistentAddress="true"
p:sessionTimeout="PT60M"
p:sessionSlop="0"
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/session-manager-system.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/session-manager-system.xml
index 5ce32c836..acc6e9c55 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/session-manager-system.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/session-manager-system.xml
@@ -63,7 +63,7 @@
<bean id="shibboleth.SessionManager" class="net.shibboleth.idp.session.impl.StorageBackedSessionManager"
depends-on="shibboleth.OpenSAMLConfig"
- p:httpServletRequest-ref="shibboleth.HttpServletRequest"
+ p:httpServletRequestSupplier-ref="shibboleth.HttpServletRequestSupplier"
p:authenticationFlowDescriptors="#{@'shibboleth.AuthenticationFlowDescriptorManager'.getComponents()}"
p:cookieManager-ref="shibboleth.CookieManager"
p:cookieName="%{idp.session.cookieName:shib_idp_session}"
diff --git a/idp-conf/src/test/resources/test/test-cas-beans.xml b/idp-conf/src/test/resources/test/test-cas-beans.xml
index 81b2320ef..7852f4538 100644
--- a/idp-conf/src/test/resources/test/test-cas-beans.xml
+++ b/idp-conf/src/test/resources/test/test-cas-beans.xml
@@ -11,7 +11,7 @@
<bean id="shibboleth.SessionManager" class="net.shibboleth.idp.session.impl.StorageBackedSessionManager"
depends-on="shibboleth.OpenSAMLConfig"
- p:httpServletRequest-ref="shibboleth.HttpServletRequest"
+ p:httpServletRequestSupplier-ref="shibboleth.HttpServletRequestSupplier"
p:authenticationFlowDescriptors="#{@'shibboleth.AuthenticationFlowDescriptorManager'.getComponents().?[id matches 'authn/(' + '%{idp.authn.flows:Password}'.trim() + ')']}"
p:cookieManager-ref="shibboleth.CookieManager"
p:storageService-ref="shibboleth.StorageService"
@@ -58,4 +58,4 @@
<bean id="shibboleth.CASProxyValidateIdPSessionPredicate"
class="net.shibboleth.idp.test.flows.cas.ToggleablePredicate" />
-</beans>
\ No newline at end of file
+</beans>
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/IdPInitiatedSSORequestMessageDecoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/IdPInitiatedSSORequestMessageDecoderTest.java
index 1e9965305..1be2c544c 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/IdPInitiatedSSORequestMessageDecoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/IdPInitiatedSSORequestMessageDecoderTest.java
@@ -17,16 +17,10 @@
package net.shibboleth.idp.saml.saml1.profile.impl;
-import net.shibboleth.idp.saml.profile.impl.BaseIdPInitiatedSSORequestMessageDecoder;
-import net.shibboleth.idp.saml.profile.impl.IdPInitiatedSSORequest;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.function.Supplier;
-import javax.servlet.http.HttpServletRequest;
-
import org.opensaml.messaging.context.MessageContext;
import org.opensaml.messaging.decoder.MessageDecodingException;
import org.opensaml.saml.common.messaging.context.SAMLBindingContext;
@@ -37,6 +31,11 @@ import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
+import jakarta.servlet.http.HttpServletRequest;
+import net.shibboleth.idp.saml.profile.impl.BaseIdPInitiatedSSORequestMessageDecoder;
+import net.shibboleth.idp.saml.profile.impl.IdPInitiatedSSORequest;
+import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+
/**
* Test the {@link IdPInitiatedSSORequestMessageDecoder}.
*/
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/IdPInitiatedSSORequestMessageDecoderTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/IdPInitiatedSSORequestMessageDecoderTest.java
index b469499ef..d2b9d391d 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/IdPInitiatedSSORequestMessageDecoderTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/IdPInitiatedSSORequestMessageDecoderTest.java
@@ -17,15 +17,10 @@
package net.shibboleth.idp.saml.saml2.profile.impl;
-import net.shibboleth.idp.saml.profile.impl.BaseIdPInitiatedSSORequestMessageDecoder;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.function.Supplier;
-import javax.servlet.http.HttpServletRequest;
-
import org.opensaml.core.testing.XMLObjectBaseTestCase;
import org.opensaml.messaging.context.MessageContext;
import org.opensaml.messaging.decoder.MessageDecodingException;
@@ -38,6 +33,10 @@ import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
+import jakarta.servlet.http.HttpServletRequest;
+import net.shibboleth.idp.saml.profile.impl.BaseIdPInitiatedSSORequestMessageDecoder;
+import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+
/**
* Test the {@link IdPInitiatedSSORequestMessageDecoder}.
*/
diff --git a/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedSessionManager.java b/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedSessionManager.java
index 698d38ce1..bd8effc94 100644
--- a/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedSessionManager.java
+++ b/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedSessionManager.java
@@ -26,6 +26,7 @@ import java.util.Iterator;
import java.util.Map;
import java.util.Objects;
import java.util.function.BiPredicate;
+import java.util.function.Supplier;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -119,7 +120,7 @@ public class StorageBackedSessionManager extends AbstractIdentifiableInitializab
@Nonnull private final Logger log = LoggerFactory.getLogger(StorageBackedSessionManager.class);
/** Servlet request to read from. */
- @Nullable private HttpServletRequest httpRequest;
+ @Nullable private Supplier<HttpServletRequest> httpRequestSupplier;
/** Inactivity timeout for sessions. */
@Nonnull private Duration sessionTimeout;
@@ -179,13 +180,14 @@ public class StorageBackedSessionManager extends AbstractIdentifiableInitializab
}
/**
- * Set the servlet request to read from.
+ * Set the {@link Supplier} for the servlet request to read from.
*
- * @param request servlet request
+ * @param requestSupplier servlet request Supplier
*/
- public void setHttpServletRequest(@Nullable final HttpServletRequest request) {
+ public void setHttpServletRequestSupplier(@Nullable final Supplier<HttpServletRequest> requestSupplier) {
checkSetterPreconditions();
- httpRequest = request;
+
+ httpRequestSupplier = requestSupplier;
}
/**
@@ -486,6 +488,7 @@ public class StorageBackedSessionManager extends AbstractIdentifiableInitializab
throws SessionException {
checkComponentActive();
+ final HttpServletRequest httpRequest = httpRequestSupplier == null?null:httpRequestSupplier.get();
if (httpRequest == null) {
throw new SessionException("No HttpServletRequest available, can't bind to client address");
}
@@ -554,6 +557,7 @@ public class StorageBackedSessionManager extends AbstractIdentifiableInitializab
if (criteria != null) {
final HttpServletRequestCriterion requestCriterion = criteria.get(HttpServletRequestCriterion.class);
if (requestCriterion != null) {
+ final HttpServletRequest httpRequest = httpRequestSupplier == null?null:httpRequestSupplier.get();
if (httpRequest != null) {
final Cookie[] cookies = httpRequest.getCookies();
if (cookies != null) {
@@ -894,4 +898,4 @@ public class StorageBackedSessionManager extends AbstractIdentifiableInitializab
}
}
-}
\ No newline at end of file
+}
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DestroySessionsTest.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DestroySessionsTest.java
index 7265a9aee..aaf5421bc 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DestroySessionsTest.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DestroySessionsTest.java
@@ -20,8 +20,17 @@ package net.shibboleth.idp.session.impl;
import java.time.Duration;
import java.util.Collections;
-import jakarta.servlet.http.Cookie;
+import org.opensaml.profile.context.ProfileRequestContext;
+import org.opensaml.storage.StorageSerializer;
+import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.mock.web.MockHttpServletResponse;
+import org.springframework.webflow.execution.Event;
+import org.springframework.webflow.execution.RequestContext;
+import org.testng.Assert;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+import jakarta.servlet.http.Cookie;
import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
import net.shibboleth.idp.profile.testing.ActionTestingSupport;
import net.shibboleth.idp.profile.testing.RequestContextBuilder;
@@ -40,16 +49,6 @@ import net.shibboleth.utilities.java.support.net.HttpServletRequestResponseConte
import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
import net.shibboleth.utilities.java.support.resolver.ResolverException;
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.opensaml.storage.StorageSerializer;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.webflow.execution.Event;
-import org.springframework.webflow.execution.RequestContext;
-import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
/** {@link DestroySessions} unit test. */
public class DestroySessionsTest extends SessionManagerBaseTestCase {
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/StorageBackedIdPSessionSerializerTest.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/StorageBackedIdPSessionSerializerTest.java
index cffae85a5..7021ca643 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/StorageBackedIdPSessionSerializerTest.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/StorageBackedIdPSessionSerializerTest.java
@@ -76,7 +76,8 @@ public class StorageBackedIdPSessionSerializerTest {
manager = new StorageBackedSessionManager();
manager.setStorageService(storageService);
manager.setIDGenerator(new SecureRandomIdentifierGenerationStrategy());
- manager.setHttpServletRequest(new ThreadLocalHttpServletRequestProxy());
+ final HttpServletRequest requestProxy = new ThreadLocalHttpServletRequestProxy();
+ manager.setHttpServletRequestSupplier(new Supplier<>() {public HttpServletRequest get() {return requestProxy;}});
manager.setCookieManager(cookieManager);
manager.setId("Test Session Manager");
manager.setTrackSPSessions(true);
@@ -174,4 +175,4 @@ public class StorageBackedIdPSessionSerializerTest {
return Files.streamToString(stream);
}
}
-}
\ No newline at end of file
+}
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/testing/SessionManagerBaseTestCase.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/testing/SessionManagerBaseTestCase.java
index 810545625..f0059565a 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/testing/SessionManagerBaseTestCase.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/testing/SessionManagerBaseTestCase.java
@@ -68,7 +68,7 @@ public class SessionManagerBaseTestCase extends OpenSAMLInitBaseTestCase {
sessionManager.setSessionTimeout(Duration.ofSeconds(15));
sessionManager.setStorageService(storageService);
sessionManager.setIDGenerator(new SecureRandomIdentifierGenerationStrategy());
- sessionManager.setHttpServletRequest(requestProxy);
+ sessionManager.setHttpServletRequestSupplier(new Supplier<>() {public HttpServletRequest get() {return requestProxy;}});
sessionManager.setCookieManager(cookieManager);
sessionManager.setId("Test Session Manager");
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list