[java-opensaml COMMIT] /trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/binding/decoding/impl/HTTPArti...

noreply at shibboleth.net noreply at shibboleth.net
Thu May 19 02:40:29 EDT 2016


Author: putmanb
Date: Thu May 19 02:40:27 2016
New Revision: 4458

URL: http://svn.shibboleth.net/view/java-opensaml?rev=4458&view=rev
Log:
Checkpoint work-in-progress on SAML 2 artifact decoder.

Modified:
    trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/binding/decoding/impl/HTTPArtifactDecoder.java

Modified: trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/binding/decoding/impl/HTTPArtifactDecoder.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/binding/decoding/impl/HTTPArtifactDecoder.java?rev=4458&r1=4457&r2=4458&view=diff
==============================================================================
--- trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/binding/decoding/impl/HTTPArtifactDecoder.java	(original)
+++ trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/binding/decoding/impl/HTTPArtifactDecoder.java	Thu May 19 02:40:27 2016
@@ -21,21 +21,42 @@
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.servlet.http.HttpServletRequest;
-
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-
+import javax.xml.namespace.QName;
+
+import org.opensaml.core.xml.util.XMLObjectSupport;
 import org.opensaml.messaging.context.MessageContext;
 import org.opensaml.messaging.decoder.MessageDecodingException;
 import org.opensaml.messaging.decoder.servlet.BaseHttpServletRequestXMLMessageDecoder;
 import org.opensaml.saml.common.SAMLObject;
 import org.opensaml.saml.common.binding.BindingDescriptor;
+import org.opensaml.saml.common.binding.EndpointResolver;
 import org.opensaml.saml.common.binding.SAMLBindingSupport;
 import org.opensaml.saml.common.binding.decoding.SAMLMessageDecoder;
+import org.opensaml.saml.common.binding.impl.DefaultEndpointResolver;
 import org.opensaml.saml.common.messaging.context.SAMLBindingContext;
 import org.opensaml.saml.common.xml.SAMLConstants;
+import org.opensaml.saml.config.SAMLConfigurationSupport;
+import org.opensaml.saml.criterion.ArtifactSourceIDCriterion;
+import org.opensaml.saml.criterion.EndpointCriterion;
+import org.opensaml.saml.criterion.EntityRoleCriterion;
+import org.opensaml.saml.criterion.ProtocolCriterion;
+import org.opensaml.saml.criterion.RoleDescriptorCriterion;
+import org.opensaml.saml.metadata.resolver.RoleDescriptorResolver;
+import org.opensaml.saml.saml2.binding.artifact.AbstractSAML2Artifact;
+import org.opensaml.saml.saml2.binding.artifact.SAML2ArtifactBuilderFactory;
+import org.opensaml.saml.saml2.binding.artifact.SAML2ArtifactType0004;
+import org.opensaml.saml.saml2.metadata.ArtifactResolutionService;
+import org.opensaml.saml.saml2.metadata.RoleDescriptor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+
+import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.utilities.java.support.component.ComponentSupport;
+import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.utilities.java.support.resolver.ResolverException;
 
 /** 
  * SAML 2 Artifact Binding decoder, support both HTTP GET and POST.
@@ -50,6 +71,140 @@
 
     /** Optional {@link BindingDescriptor} to inject into {@link SAMLBindingContext} created. */
     @Nullable private BindingDescriptor bindingDescriptor;
+    
+    /** SAML 2 artifact builder factory. */
+    @NonnullAfterInit private SAML2ArtifactBuilderFactory artifactBuilderFactory;
+    
+    /** Resolver for ArtifactResolutionService endpoints. **/
+    @NonnullAfterInit private EndpointResolver<ArtifactResolutionService> artifactEndpointResolver;
+    
+    /** Role descriptor resolver. */
+    @NonnullAfterInit private RoleDescriptorResolver roleDescriptorResolver;
+    
+    /** The peer entity role QName. */
+    @NonnullAfterInit private QName peerEntityRole;
+
+    /** {@inheritDoc} */
+    protected void doInitialize() throws ComponentInitializationException {
+        super.doInitialize();
+        if (artifactBuilderFactory == null) {
+            artifactBuilderFactory = SAMLConfigurationSupport.getSAML2ArtifactBuilderFactory();
+            if (artifactBuilderFactory == null) {
+                throw new ComponentInitializationException("Could not obtain a required instance " 
+                        + "of SAML2ArtifactBuilderFactory");
+            }
+        }
+        
+        if (artifactEndpointResolver == null) {
+            artifactEndpointResolver = new DefaultEndpointResolver<>();
+        }
+        
+        if (roleDescriptorResolver == null) {
+            //TODO default this?  Need new impl that doesn't require EntityIdCriterion
+        }
+        
+        if (peerEntityRole == null) {

[... 214 lines stripped ...]


More information about the commits mailing list