[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