[java-idp-testbed] branch main updated: IdP-1793 Supplier-ize the HttServletRequest

Rod Widdowson rdw at steadingsoftware.com
Tue Aug 16 15:36:27 UTC 2022


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

rdw pushed a commit to branch main
in repository java-idp-testbed.

View the commit online:
http://git.shibboleth.net/view/?p=java-idp-testbed.git;a=commit;h=124729942b100f7c19e88691a2f01f6319e88056

The following commit(s) were added to refs/heads/main by this push:
     new 1247299  IdP-1793 Supplier-ize the HttServletRequest
1247299 is described below

commit 124729942b100f7c19e88691a2f01f6319e88056
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Tue Aug 16 16:28:16 2022 +0100

    IdP-1793 Supplier-ize the HttServletRequest
---
 src/main/java/sp/BaseSAMLController.java | 17 +++++++++++---
 src/main/java/sp/SAML2Controller.java    | 40 ++++++++++++++++++++------------
 2 files changed, 39 insertions(+), 18 deletions(-)

diff --git a/src/main/java/sp/BaseSAMLController.java b/src/main/java/sp/BaseSAMLController.java
index 0ef2302..a710d31 100644
--- a/src/main/java/sp/BaseSAMLController.java
+++ b/src/main/java/sp/BaseSAMLController.java
@@ -24,11 +24,14 @@ import net.shibboleth.utilities.java.support.security.IdentifierGenerationStrate
 import net.shibboleth.utilities.java.support.security.impl.Type4UUIDIdentifierGenerationStrategy;
 import net.shibboleth.utilities.java.support.xml.ParserPool;
 
+import java.util.function.Supplier;
+
 import org.apache.velocity.app.VelocityEngine;
 import org.opensaml.core.xml.XMLObjectBuilderFactory;
 import org.opensaml.core.xml.io.MarshallerFactory;
 import org.opensaml.messaging.context.MessageContext;
 import org.opensaml.messaging.decoder.MessageDecodingException;
+import org.opensaml.messaging.decoder.servlet.BaseHttpServletRequestXMLMessageDecoder;
 import org.opensaml.saml.common.binding.artifact.SAMLArtifactMap;
 import org.opensaml.saml.saml2.binding.decoding.impl.HTTPPostDecoder;
 import org.opensaml.saml.saml2.binding.decoding.impl.HTTPRedirectDeflateDecoder;
@@ -59,12 +62,20 @@ public abstract class BaseSAMLController {
     @Autowired @Qualifier("test.sp.Credential") protected Credential spCredential;
     
     @Autowired protected ApplicationContext applicationContext;
+
+    private void setRequest(final BaseHttpServletRequestXMLMessageDecoder decoder, final HttpServletRequest servletRequest) {
+        decoder.setHttpServletRequestSupplier(new Supplier() {
+            public HttpServletRequest get() {
+                return servletRequest;
+            }
+        });
+    }
     
     protected MessageContext decodeInboundMessageContextPost(HttpServletRequest servletRequest)
             throws Exception {
         HTTPPostDecoder decoder = new HTTPPostDecoder();
         try {
-            decoder.setHttpServletRequest(servletRequest);
+            setRequest(decoder, servletRequest);
             decoder.setParserPool(parserPool);
             decoder.initialize();
 
@@ -83,7 +94,7 @@ public abstract class BaseSAMLController {
             throws Exception {
         HTTPSOAP11Decoder decoder = new HTTPSOAP11Decoder();
         try {
-            decoder.setHttpServletRequest(servletRequest);
+            setRequest(decoder, servletRequest);
             decoder.setParserPool(parserPool);
             decoder.initialize();
 
@@ -102,7 +113,7 @@ public abstract class BaseSAMLController {
             throws Exception {
         HTTPRedirectDeflateDecoder decoder = new HTTPRedirectDeflateDecoder();
         try {
-            decoder.setHttpServletRequest(servletRequest);
+            setRequest(decoder, servletRequest);
             decoder.setParserPool(parserPool);
             decoder.initialize();
 
diff --git a/src/main/java/sp/SAML2Controller.java b/src/main/java/sp/SAML2Controller.java
index a13e34a..7e17bc0 100644
--- a/src/main/java/sp/SAML2Controller.java
+++ b/src/main/java/sp/SAML2Controller.java
@@ -8,20 +8,11 @@ import java.security.cert.Certificate;
 import java.security.cert.X509Certificate;
 import java.time.Instant;
 import java.util.Map;
+import java.util.function.Supplier;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.net.ssl.SSLContext;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.net.URLBuilder;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-import net.shibboleth.utilities.java.support.security.impl.SecureRandomIdentifierGenerationStrategy;
-import net.shibboleth.utilities.java.support.xml.SerializeSupport;
-import net.shibboleth.utilities.java.support.xml.XMLParserException;
 
 import org.apache.http.client.HttpClient;
 import org.apache.http.conn.ssl.SSLContextBuilder;
@@ -36,6 +27,7 @@ import org.opensaml.core.xml.io.MarshallingException;
 import org.opensaml.messaging.context.InOutOperationContext;
 import org.opensaml.messaging.context.MessageContext;
 import org.opensaml.messaging.encoder.MessageEncodingException;
+import org.opensaml.messaging.encoder.servlet.AbstractHttpServletResponseMessageEncoder;
 import org.opensaml.saml.common.SAMLObject;
 import org.opensaml.saml.common.SAMLObjectBuilder;
 import org.opensaml.saml.common.SAMLVersion;
@@ -98,6 +90,16 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.servlet.HandlerMapping;
 import org.w3c.dom.Element;
 
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.utilities.java.support.net.URLBuilder;
+import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.utilities.java.support.security.impl.SecureRandomIdentifierGenerationStrategy;
+import net.shibboleth.utilities.java.support.xml.SerializeSupport;
+import net.shibboleth.utilities.java.support.xml.XMLParserException;
+
 @Controller
 @RequestMapping({"/SAML2", "/{spId}/SAML2"})
 public class SAML2Controller extends BaseSAMLController {
@@ -393,11 +395,19 @@ public class SAML2Controller extends BaseSAMLController {
 		
 		return messageContext;
 	}
-	
+
+    private void setupResponse(final AbstractHttpServletResponseMessageEncoder encoder, final HttpServletResponse response) {
+        encoder.setHttpServletResponseSupplier(new Supplier() {
+            public HttpServletResponse get() {
+                return response;
+            }
+        });
+    }
+
 	private void encodeOutboundMessageContextRedirect(MessageContext messageContext, HttpServletResponse servletResponse) throws Exception {
 		HTTPRedirectDeflateEncoder encoder = new HTTPRedirectDeflateEncoder();
 		try {
-			encoder.setHttpServletResponse(servletResponse);
+		    setupResponse(encoder,servletResponse);
 			encoder.setMessageContext(messageContext);
 			encoder.initialize();
 			
@@ -414,7 +424,7 @@ public class SAML2Controller extends BaseSAMLController {
 	private void encodeOutboundMessageContextPost(MessageContext messageContext, HttpServletResponse servletResponse) throws Exception {
 		HTTPPostEncoder encoder = new HTTPPostEncoder();
 		try {
-			encoder.setHttpServletResponse(servletResponse);
+		    setupResponse(encoder,servletResponse);
 			encoder.setMessageContext(messageContext);
 			encoder.setVelocityEngine(velocityEngine);
 			encoder.initialize();
@@ -432,7 +442,7 @@ public class SAML2Controller extends BaseSAMLController {
    private void encodeOutboundMessageContextArtifact(MessageContext messageContext, HttpServletResponse servletResponse) throws Exception {
         HTTPArtifactEncoder encoder = new HTTPArtifactEncoder();
         try {
-            encoder.setHttpServletResponse(servletResponse);
+            setupResponse(encoder,servletResponse);
             encoder.setMessageContext(messageContext);
             encoder.setVelocityEngine(velocityEngine);
             encoder.setArtifactMap(artifactMap);
@@ -451,7 +461,7 @@ public class SAML2Controller extends BaseSAMLController {
    private void encodeOutboundMessageContextSOAP(MessageContext messageContext, HttpServletResponse servletResponse) throws Exception {
        HTTPSOAP11Encoder encoder = new HTTPSOAP11Encoder();
        try {
-           encoder.setHttpServletResponse(servletResponse);
+           setupResponse(encoder,servletResponse);
            encoder.setMessageContext(messageContext);
            encoder.initialize();
            

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


More information about the commits mailing list