[java-idp-testbed] branch main updated: SAML1 Controller should use the SAML1 HTTPPostDecoder not SAML2

Codeberg noreply at shibboleth.net
Thu Feb 19 21:11:47 UTC 2026


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

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

View the commit online:
https://codeberg.org/Shibboleth/java-idp-testbed/commit/dab1bbc7eca4460173643c6793be7318e4800cf4

The following commit(s) were added to refs/heads/main by this push:
     new dab1bbc  SAML1 Controller should use the SAML1 HTTPPostDecoder not SAML2
dab1bbc is described below

commit dab1bbc7eca4460173643c6793be7318e4800cf4
Author: Tom Zeller <tzeller at dragonacea.biz>
AuthorDate: Thu Feb 19 15:09:50 2026 -0600

    SAML1 Controller should use the SAML1 HTTPPostDecoder not SAML2
    
    Move other SAML2 methods to SAML2 controller
---
 src/main/java/sp/BaseSAMLController.java | 70 +-------------------------------
 src/main/java/sp/SAML1Controller.java    | 41 +++++++++++++++----
 src/main/java/sp/SAML2Controller.java    | 60 +++++++++++++++++++++++++++
 3 files changed, 93 insertions(+), 78 deletions(-)

diff --git a/src/main/java/sp/BaseSAMLController.java b/src/main/java/sp/BaseSAMLController.java
index 4c1f751..0806d67 100644
--- a/src/main/java/sp/BaseSAMLController.java
+++ b/src/main/java/sp/BaseSAMLController.java
@@ -19,22 +19,14 @@ import javax.annotation.Nonnull;
 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;
-import org.opensaml.saml.saml2.binding.decoding.impl.HTTPSOAP11Decoder;
 import org.opensaml.security.credential.Credential;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.context.ApplicationContext;
 
 import jakarta.servlet.http.HttpServletRequest;
-import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.primitive.NonnullSupplier;
 import net.shibboleth.shared.security.IdentifierGenerationStrategy;
 import net.shibboleth.shared.security.IdentifierGenerationStrategy.ProviderType;
@@ -42,8 +34,6 @@ import net.shibboleth.shared.xml.ParserPool;
 
 public abstract class BaseSAMLController {
 
-    private Logger log = LoggerFactory.getLogger(BaseSAMLController.class);
-
     @Autowired protected XMLObjectBuilderFactory builderFactory;
 
     @Autowired protected MarshallerFactory marshallerFactory;
@@ -60,65 +50,7 @@ public abstract class BaseSAMLController {
     
     @Autowired protected ApplicationContext applicationContext;
 
-    private void setRequest(final BaseHttpServletRequestXMLMessageDecoder decoder, @Nonnull final HttpServletRequest servletRequest) {
+    protected void setRequest(final BaseHttpServletRequestXMLMessageDecoder decoder, @Nonnull final HttpServletRequest servletRequest) {
         decoder.setHttpServletRequestSupplier(NonnullSupplier.of(servletRequest));
     }
-    
-    protected MessageContext decodeInboundMessageContextPost(@Nonnull HttpServletRequest servletRequest)
-            throws Exception {
-        HTTPPostDecoder decoder = new HTTPPostDecoder();
-        try {
-            setRequest(decoder, servletRequest);
-            decoder.setParserPool(parserPool);
-            decoder.initialize();
-
-            decoder.decode();
-
-            return decoder.getMessageContext();
-        } catch (ComponentInitializationException | MessageDecodingException e) {
-            log.error("Error decoding inbound message context", e);
-            throw e;
-        } finally {
-            decoder.destroy();
-        }
-    }
-
-    protected MessageContext decodeInboundMessageContextSOAP(@Nonnull HttpServletRequest servletRequest)
-            throws Exception {
-        HTTPSOAP11Decoder decoder = new HTTPSOAP11Decoder();
-        try {
-            setRequest(decoder, servletRequest);
-            decoder.setParserPool(parserPool);
-            decoder.initialize();
-
-            decoder.decode();
-
-            return decoder.getMessageContext();
-        } catch (ComponentInitializationException | MessageDecodingException e) {
-            log.error("Error decoding inbound message context", e);
-            throw e;
-        } finally {
-            decoder.destroy();
-        }
-    }
-    
-    protected MessageContext decodeInboundMessageContextRedirect(@Nonnull HttpServletRequest servletRequest)
-            throws Exception {
-        HTTPRedirectDeflateDecoder decoder = new HTTPRedirectDeflateDecoder();
-        try {
-            setRequest(decoder, servletRequest);
-            decoder.setParserPool(parserPool);
-            decoder.initialize();
-
-            decoder.decode();
-
-            return decoder.getMessageContext();
-        } catch (ComponentInitializationException | MessageDecodingException e) {
-            log.error("Error decoding inbound message context", e);
-            throw e;
-        } finally {
-            decoder.destroy();
-        }
-    }
-
 }
\ No newline at end of file
diff --git a/src/main/java/sp/SAML1Controller.java b/src/main/java/sp/SAML1Controller.java
index 08f710e..5540090 100644
--- a/src/main/java/sp/SAML1Controller.java
+++ b/src/main/java/sp/SAML1Controller.java
@@ -22,15 +22,6 @@ import java.util.Map;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-import net.shibboleth.shared.httpclient.HttpClientBuilder;
-import net.shibboleth.shared.httpclient.HttpClientSupport;
-import net.shibboleth.shared.primitive.StringSupport;
-import net.shibboleth.shared.security.IdentifierGenerationStrategy;
-import net.shibboleth.shared.security.IdentifierGenerationStrategy.ProviderType;
-import net.shibboleth.shared.xml.SerializeSupport;
-import net.shibboleth.shared.xml.XMLParserException;
 
 import org.apache.hc.client5.http.classic.HttpClient;
 import org.cryptacular.util.CertUtil;
@@ -41,8 +32,10 @@ import org.opensaml.core.xml.io.Marshaller;
 import org.opensaml.core.xml.io.MarshallingException;
 import org.opensaml.messaging.context.InOutOperationContext;
 import org.opensaml.messaging.context.MessageContext;
+import org.opensaml.messaging.decoder.MessageDecodingException;
 import org.opensaml.saml.common.SAMLObjectBuilder;
 import org.opensaml.saml.common.SAMLVersion;
+import org.opensaml.saml.saml1.binding.decoding.impl.HTTPPostDecoder;
 import org.opensaml.saml.saml1.core.AttributeQuery;
 import org.opensaml.saml.saml1.core.NameIdentifier;
 import org.opensaml.saml.saml1.core.Request;
@@ -72,6 +65,17 @@ 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.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.httpclient.HttpClientBuilder;
+import net.shibboleth.shared.httpclient.HttpClientSupport;
+import net.shibboleth.shared.primitive.StringSupport;
+import net.shibboleth.shared.security.IdentifierGenerationStrategy;
+import net.shibboleth.shared.security.IdentifierGenerationStrategy.ProviderType;
+import net.shibboleth.shared.xml.SerializeSupport;
+import net.shibboleth.shared.xml.XMLParserException;
+
 @Controller
 @RequestMapping({"/SAML1", "/{spId}/SAML1"})
 public class SAML1Controller extends BaseSAMLController {
@@ -331,4 +335,23 @@ public class SAML1Controller extends BaseSAMLController {
         SignatureSupport.signObject(signable, signingParameters);
     }
 
+    protected MessageContext decodeInboundMessageContextPost(@Nonnull HttpServletRequest servletRequest)
+            throws Exception {
+        HTTPPostDecoder decoder = new HTTPPostDecoder();
+        try {
+            setRequest(decoder, servletRequest);
+            decoder.setParserPool(parserPool);
+            decoder.initialize();
+
+            decoder.decode();
+
+            return decoder.getMessageContext();
+        } catch (ComponentInitializationException | MessageDecodingException e) {
+            log.error("Error decoding inbound message context", e);
+            throw e;
+        } finally {
+            decoder.destroy();
+        }
+    }
+
 }
diff --git a/src/main/java/sp/SAML2Controller.java b/src/main/java/sp/SAML2Controller.java
index 8200d7c..a9bc8a6 100644
--- a/src/main/java/sp/SAML2Controller.java
+++ b/src/main/java/sp/SAML2Controller.java
@@ -33,6 +33,7 @@ import org.opensaml.core.xml.io.Marshaller;
 import org.opensaml.core.xml.io.MarshallingException;
 import org.opensaml.messaging.context.InOutOperationContext;
 import org.opensaml.messaging.context.MessageContext;
+import org.opensaml.messaging.decoder.MessageDecodingException;
 import org.opensaml.messaging.encoder.MessageEncodingException;
 import org.opensaml.messaging.encoder.servlet.AbstractHttpServletResponseMessageEncoder;
 import org.opensaml.saml.common.SAMLObject;
@@ -47,6 +48,9 @@ import org.opensaml.saml.common.messaging.context.SAMLSelfEntityContext;
 import org.opensaml.saml.common.xml.SAMLConstants;
 import org.opensaml.saml.ext.reqattr.RequestedAttributes;
 import org.opensaml.saml.ext.saml2aslo.Asynchronous;
+import org.opensaml.saml.saml2.binding.decoding.impl.HTTPPostDecoder;
+import org.opensaml.saml.saml2.binding.decoding.impl.HTTPRedirectDeflateDecoder;
+import org.opensaml.saml.saml2.binding.decoding.impl.HTTPSOAP11Decoder;
 import org.opensaml.saml.saml2.binding.encoding.impl.HTTPArtifactEncoder;
 import org.opensaml.saml.saml2.binding.encoding.impl.HTTPPostEncoder;
 import org.opensaml.saml.saml2.binding.encoding.impl.HTTPRedirectDeflateEncoder;
@@ -1178,4 +1182,60 @@ public class SAML2Controller extends BaseSAMLController {
         SignatureSupport.signObject(signable, signingParameters);
     }
 
+    protected MessageContext decodeInboundMessageContextPost(@Nonnull HttpServletRequest servletRequest)
+            throws Exception {
+        HTTPPostDecoder decoder = new HTTPPostDecoder();
+        try {
+            setRequest(decoder, servletRequest);
+            decoder.setParserPool(parserPool);
+            decoder.initialize();
+
+            decoder.decode();
+
+            return decoder.getMessageContext();
+        } catch (ComponentInitializationException | MessageDecodingException e) {
+            log.error("Error decoding inbound message context", e);
+            throw e;
+        } finally {
+            decoder.destroy();
+        }
+    }
+
+    protected MessageContext decodeInboundMessageContextSOAP(@Nonnull HttpServletRequest servletRequest)
+            throws Exception {
+        HTTPSOAP11Decoder decoder = new HTTPSOAP11Decoder();
+        try {
+            setRequest(decoder, servletRequest);
+            decoder.setParserPool(parserPool);
+            decoder.initialize();
+
+            decoder.decode();
+
+            return decoder.getMessageContext();
+        } catch (ComponentInitializationException | MessageDecodingException e) {
+            log.error("Error decoding inbound message context", e);
+            throw e;
+        } finally {
+            decoder.destroy();
+        }
+    }
+    
+    protected MessageContext decodeInboundMessageContextRedirect(@Nonnull HttpServletRequest servletRequest)
+            throws Exception {
+        HTTPRedirectDeflateDecoder decoder = new HTTPRedirectDeflateDecoder();
+        try {
+            setRequest(decoder, servletRequest);
+            decoder.setParserPool(parserPool);
+            decoder.initialize();
+
+            decoder.decode();
+
+            return decoder.getMessageContext();
+        } catch (ComponentInitializationException | MessageDecodingException e) {
+            log.error("Error decoding inbound message context", e);
+            throw e;
+        } finally {
+            decoder.destroy();
+        }
+    }
 }

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


More information about the commits mailing list