[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