[java-opensaml COMMIT] in /trunk: opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/BaseHtt...

noreply at shibboleth.net noreply at shibboleth.net
Wed Oct 19 22:17:49 EDT 2016


Author: putmanb
Date: Wed Oct 19 22:17:49 2016
New Revision: 4545

URL: http://svn.shibboleth.net/view/java-opensaml?rev=4545&view=rev
Log:
OSJ-155: Consider changes to decoders vis-a-vis Content-Type header eval

Basic validation hook in base servlet decoder.
Validation for 'text/xml' in HTTP SOAP 1.1 decoder impl.

Modified:
    trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/BaseHttpServletRequestXMLMessageDecoder.java
    trunk/opensaml-soap-impl/src/main/java/org/opensaml/soap/soap11/decoder/http/impl/HTTPSOAP11Decoder.java
    trunk/opensaml-soap-impl/src/test/java/org/opensaml/soap/soap11/decoder/http/impl/HTTPSOAP11DecoderTest.java

Modified: trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/BaseHttpServletRequestXMLMessageDecoder.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/BaseHttpServletRequestXMLMessageDecoder.java?rev=4545&r1=4544&r2=4545&view=diff
==============================================================================
--- trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/BaseHttpServletRequestXMLMessageDecoder.java	(original)
+++ trunk/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/servlet/BaseHttpServletRequestXMLMessageDecoder.java	Wed Oct 19 22:17:49 2016
@@ -20,6 +20,7 @@
 import java.io.InputStream;
 
 import javax.annotation.Nonnull;
+import javax.servlet.http.HttpServletRequest;
 
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 import net.shibboleth.utilities.java.support.logic.Constraint;
@@ -32,6 +33,7 @@
 import org.opensaml.core.xml.io.MarshallingException;
 import org.opensaml.core.xml.io.UnmarshallingException;
 import org.opensaml.core.xml.util.XMLObjectSupport;
+import org.opensaml.messaging.decoder.MessageDecoder;
 import org.opensaml.messaging.decoder.MessageDecodingException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -64,6 +66,8 @@
         log.debug("Beginning to decode message from HttpServletRequest");
         
         log.debug("HttpServletRequest indicated Content-Type: {}", getHttpServletRequest().getContentType());
+        
+        validateHttpRequest(getHttpServletRequest());
         
         super.decode();
         
@@ -157,5 +161,22 @@
             throw new MessageDecodingException("Error unmarshalling message from input stream", e);
         }
     }
+    
+    /**
+     * Perform optional validation of the inbound {@link HttpServletRequest}.
+     * 
+     * <p>
+     * This method is called before the main {@link MessageDecoder#decode()} logic}.
+     * </p>
+     * 
+     * <p>
+     * The default behavior is a no-op.  Subclasses may override with specific constraints.
+     * </p>
+     * 
+     * @param request
+     */
+    protected void validateHttpRequest(HttpServletRequest request) throws MessageDecodingException {
+        // Default is no-op
+    }
 
 }

Modified: trunk/opensaml-soap-impl/src/main/java/org/opensaml/soap/soap11/decoder/http/impl/HTTPSOAP11Decoder.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-soap-impl/src/main/java/org/opensaml/soap/soap11/decoder/http/impl/HTTPSOAP11Decoder.java?rev=4545&r1=4544&r2=4545&view=diff
==============================================================================
--- trunk/opensaml-soap-impl/src/main/java/org/opensaml/soap/soap11/decoder/http/impl/HTTPSOAP11Decoder.java	(original)
+++ trunk/opensaml-soap-impl/src/main/java/org/opensaml/soap/soap11/decoder/http/impl/HTTPSOAP11Decoder.java	Wed Oct 19 22:17:49 2016
@@ -18,10 +18,9 @@
 package org.opensaml.soap.soap11.decoder.http.impl;
 
 import java.io.IOException;
+import java.util.Set;
 
 import javax.servlet.http.HttpServletRequest;
-
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.messaging.context.MessageContext;
@@ -33,6 +32,12 @@
 import org.opensaml.soap.soap11.Envelope;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+
+import com.google.common.collect.Sets;
+import com.google.common.net.MediaType;
+
+import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.utilities.java.support.net.HttpServletSupport;
 
 /**
  * Basic SOAP 1.1 decoder for HTTP transport.
@@ -53,6 +58,9 @@
 public class HTTPSOAP11Decoder<MessageType extends XMLObject> 
     extends BaseHttpServletRequestXMLMessageDecoder<MessageType> {
 
+    /** Valid Content-Type media types. */
+    private static final Set<MediaType> SUPPORTED_MEDIA_TYPES = Sets.newHashSet(MediaType.create("text", "xml"));
+    
     /** Class logger. */
     private final Logger log = LoggerFactory.getLogger(HTTPSOAP11Decoder.class);
     
@@ -129,4 +137,17 @@
         return getMessageContext().getSubcontext(SOAP11Context.class, true).getEnvelope();
     }
 
+    /** {@inheritDoc} */
+    @Override

[... 79 lines stripped ...]


More information about the commits mailing list