Fixup artifact decoders
authorlajoie <lajoie@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Tue, 21 Aug 2007 21:23:00 +0000 (21:23 +0000)
committerlajoie <lajoie@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Tue, 21 Aug 2007 21:23:00 +0000 (21:23 +0000)
git-svn-id: https://subversion.switch.ch/svn/shibboleth/java-idp/trunk@2338 ab3bd59b-922f-494d-bb5f-6f0a3c29deca

src/edu/internet2/middleware/shibboleth/idp/profile/saml1/ArtifactResolution.java
src/edu/internet2/middleware/shibboleth/idp/profile/saml1/AttributeQueryProfileHandler.java
src/edu/internet2/middleware/shibboleth/idp/profile/saml1/ShibbolethSSOEndpointSelector.java
src/edu/internet2/middleware/shibboleth/idp/profile/saml1/ShibbolethSSOProfileHandler.java
src/edu/internet2/middleware/shibboleth/idp/profile/saml2/ArtifactResolution.java
src/edu/internet2/middleware/shibboleth/idp/profile/saml2/SSOProfileHandler.java

index 22558a1..4b2c8db 100644 (file)
@@ -28,8 +28,8 @@ import org.opensaml.common.binding.artifact.SAMLArtifactMap.SAMLArtifactMapEntry
 import org.opensaml.common.binding.decoding.SAMLMessageDecoder;
 import org.opensaml.common.xml.SAMLConstants;
 import org.opensaml.saml1.binding.SAML1ArtifactMessageContext;
+import org.opensaml.saml1.binding.artifact.AbstractSAML1Artifact;
 import org.opensaml.saml1.core.Assertion;
-import org.opensaml.saml1.core.AssertionArtifact;
 import org.opensaml.saml1.core.NameIdentifier;
 import org.opensaml.saml1.core.Request;
 import org.opensaml.saml1.core.Response;
@@ -154,13 +154,6 @@ public class ArtifactResolution extends AbstractSAML1ProfileHandler {
             // Set as much information as can be retrieved from the decoded message
             try {
                 Request samlRequest = requestContext.getInboundSAMLMessage();
-                if (samlRequest.getAssertionArtifacts() != null) {
-                    ArrayList<String> artifacts = new ArrayList<String>();
-                    for (AssertionArtifact artifact : samlRequest.getAssertionArtifacts()) {
-                        artifacts.add(artifact.getAssertionArtifact());
-                    }
-                    requestContext.setArtifacts(artifacts);
-                }
                 requestContext.setInboundSAMLMessageId(samlRequest.getID());
                 requestContext.setInboundSAMLMessageIssueInstant(samlRequest.getIssueInstant());
 
@@ -208,8 +201,8 @@ public class ArtifactResolution extends AbstractSAML1ProfileHandler {
         BasicEndpointSelector endpointSelector = new BasicEndpointSelector();
         endpointSelector.setEndpointType(AssertionConsumerService.DEFAULT_ELEMENT_NAME);
         endpointSelector.setMetadataProvider(getMetadataProvider());
-        endpointSelector.setRelyingParty(requestContext.getPeerEntityMetadata());
-        endpointSelector.setRelyingPartyRole(requestContext.getPeerEntityRoleMetadata());
+        endpointSelector.setEntityMetadata(requestContext.getPeerEntityMetadata());
+        endpointSelector.setEntityRoleMetadata(requestContext.getPeerEntityRoleMetadata());
         endpointSelector.setSamlRequest(requestContext.getInboundSAMLMessage());
         endpointSelector.getSupportedIssuerBindings().addAll(getSupportedOutboundBindings());
         return endpointSelector.selectEndpoint();
@@ -221,13 +214,13 @@ public class ArtifactResolution extends AbstractSAML1ProfileHandler {
      * @param requestContext current request context
      */
     protected void derferenceArtifacts(ArtifactResolutionRequestContext requestContext) {
-        Collection<String> artifacts = requestContext.getArtifacts();
+        Collection<AbstractSAML1Artifact> artifacts = requestContext.getArtifacts();
         if (artifacts != null) {
             ArrayList<Assertion> assertions = new ArrayList<Assertion>();
             SAMLArtifactMapEntry artifactEntry;
 
-            for (String artifact : artifacts) {
-                artifactEntry = artifactMap.peek(artifact.getBytes());
+            for (AbstractSAML1Artifact artifact : artifacts) {
+                artifactEntry = artifactMap.peek(artifact.getArtifactBytes());
                 if (artifactEntry == null || artifactEntry.isExpired()) {
                     log.error("Unknown artifact.");
                 }
@@ -242,7 +235,7 @@ public class ArtifactResolution extends AbstractSAML1ProfileHandler {
                             + artifactEntry.getRelyingPartyId() + " but was resolve request came from "
                             + requestContext.getPeerEntityId());
                 }
-                artifactMap.get(artifact.getBytes());
+                artifactMap.get(artifact.getArtifactBytes());
                 assertions.add((Assertion) artifactEntry.getSamlMessage());
             }
             requestContext.setReferencedAssertions(assertions);
@@ -280,7 +273,7 @@ public class ArtifactResolution extends AbstractSAML1ProfileHandler {
             SAML1ArtifactMessageContext<Request, Response, NameIdentifier> {
 
         /** Artifact to be resolved. */
-        private Collection<String> artifacts;
+        private Collection<AbstractSAML1Artifact> artifacts;
 
         /** Message referenced by the SAML artifact. */
         private Collection<Assertion> referencedAssertions;
@@ -290,7 +283,7 @@ public class ArtifactResolution extends AbstractSAML1ProfileHandler {
          * 
          * @return artifacts to be resolved
          */
-        public Collection<String> getArtifacts() {
+        public Collection<AbstractSAML1Artifact> getArtifacts() {
             return artifacts;
         }
 
@@ -299,7 +292,7 @@ public class ArtifactResolution extends AbstractSAML1ProfileHandler {
          * 
          * @param artifacts artifacts to be resolved
          */
-        public void setArtifacts(Collection<String> artifacts) {
+        public void setArtifacts(Collection<AbstractSAML1Artifact> artifacts) {
             this.artifacts = artifacts;
         }
 
index 5d07467..d47b6a1 100644 (file)
@@ -186,8 +186,8 @@ public class AttributeQueryProfileHandler extends AbstractSAML1ProfileHandler {
         BasicEndpointSelector endpointSelector = new BasicEndpointSelector();
         endpointSelector.setEndpointType(AssertionConsumerService.DEFAULT_ELEMENT_NAME);
         endpointSelector.setMetadataProvider(getMetadataProvider());
-        endpointSelector.setRelyingParty(requestContext.getPeerEntityMetadata());
-        endpointSelector.setRelyingPartyRole(requestContext.getPeerEntityRoleMetadata());
+        endpointSelector.setEntityMetadata(requestContext.getPeerEntityMetadata());
+        endpointSelector.setEntityRoleMetadata(requestContext.getPeerEntityRoleMetadata());
         endpointSelector.setSamlRequest(requestContext.getInboundSAMLMessage());
         endpointSelector.getSupportedIssuerBindings().addAll(getSupportedOutboundBindings());
 
index 241a925..6444184 100644 (file)
@@ -65,7 +65,7 @@ public class ShibbolethSSOEndpointSelector extends BasicEndpointSelector {
      * @return endpoint corresponding to the SP-provdided ACS URL
      */
     protected Endpoint selectEndpointByACS() {
-        List<Endpoint> endpoints = getRelyingPartyRole().getEndpoints();
+        List<Endpoint> endpoints = getEntityRoleMetadata().getEndpoints();
         if (endpoints != null) {
             for (Endpoint endpoint : endpoints) {
                 if (endpoint.getLocation().equalsIgnoreCase(spAssertionConsumerService)
index 57a98d3..e7581d3 100644 (file)
@@ -332,8 +332,8 @@ public class ShibbolethSSOProfileHandler extends AbstractSAML1ProfileHandler {
         endpointSelector.setSpAssertionConsumerService(loginContext.getSpAssertionConsumerService());
         endpointSelector.setEndpointType(AssertionConsumerService.DEFAULT_ELEMENT_NAME);
         endpointSelector.setMetadataProvider(getMetadataProvider());
-        endpointSelector.setRelyingParty(requestContext.getPeerEntityMetadata());
-        endpointSelector.setRelyingPartyRole(requestContext.getPeerEntityRoleMetadata());
+        endpointSelector.setEntityMetadata(requestContext.getPeerEntityMetadata());
+        endpointSelector.setEntityRoleMetadata(requestContext.getPeerEntityRoleMetadata());
         endpointSelector.setSamlRequest(requestContext.getInboundSAMLMessage());
         endpointSelector.getSupportedIssuerBindings().addAll(getSupportedOutboundBindings());
 
index 0575140..1b1c378 100644 (file)
@@ -18,6 +18,7 @@ package edu.internet2.middleware.shibboleth.idp.profile.saml2;
 
 import org.apache.log4j.Logger;
 import org.joda.time.DateTime;
+import org.opensaml.Configuration;
 import org.opensaml.common.SAMLObject;
 import org.opensaml.common.SAMLObjectBuilder;
 import org.opensaml.common.binding.BasicEndpointSelector;
@@ -26,6 +27,8 @@ import org.opensaml.common.binding.artifact.SAMLArtifactMap.SAMLArtifactMapEntry
 import org.opensaml.common.binding.decoding.SAMLMessageDecoder;
 import org.opensaml.common.xml.SAMLConstants;
 import org.opensaml.saml2.binding.SAML2ArtifactMessageContext;
+import org.opensaml.saml2.binding.artifact.AbstractSAML2Artifact;
+import org.opensaml.saml2.binding.artifact.SAML2ArtifactBuilderFactory;
 import org.opensaml.saml2.core.ArtifactResolve;
 import org.opensaml.saml2.core.ArtifactResponse;
 import org.opensaml.saml2.core.NameID;
@@ -41,6 +44,7 @@ import org.opensaml.ws.message.decoder.MessageDecodingException;
 import org.opensaml.ws.security.SecurityPolicyException;
 import org.opensaml.ws.transport.http.HTTPInTransport;
 import org.opensaml.ws.transport.http.HTTPOutTransport;
+import org.opensaml.xml.util.Base64;
 
 import edu.internet2.middleware.shibboleth.common.profile.ProfileException;
 import edu.internet2.middleware.shibboleth.common.relyingparty.RelyingPartyConfiguration;
@@ -91,7 +95,7 @@ public class ArtifactResolution extends AbstractSAML2ProfileHandler {
 
             checkSamlVersion(requestContext);
 
-            SAMLArtifactMapEntry artifactEntry = artifactMap.peek(requestContext.getArtifact().getBytes());
+            SAMLArtifactMapEntry artifactEntry = artifactMap.peek(requestContext.getArtifact().getArtifactBytes());
             if (artifactEntry == null || artifactEntry.isExpired()) {
                 log.error("Unknown artifact.");
                 requestContext.setFailureStatus(buildStatus(StatusCode.SUCCESS_URI, StatusCode.REQUEST_DENIED_URI,
@@ -111,7 +115,7 @@ public class ArtifactResolution extends AbstractSAML2ProfileHandler {
                 requestContext.setFailureStatus(buildStatus(StatusCode.SUCCESS_URI, StatusCode.REQUEST_DENIED_URI,
                         "Artifact requester mismatch."));
             }
-            artifactMap.get(requestContext.getArtifact().getBytes());
+            artifactMap.get(requestContext.getArtifact().getArtifactBytes());
             SAMLObject referencedMessage = artifactEntry.getSamlMessage();
             requestContext.setReferencedMessage(referencedMessage);
 
@@ -175,7 +179,6 @@ public class ArtifactResolution extends AbstractSAML2ProfileHandler {
             // Set as much information as can be retrieved from the decoded message
             try {
                 ArtifactResolve artResolve = requestContext.getInboundSAMLMessage();
-                requestContext.setArtifact(artResolve.getArtifact().getArtifact());
                 requestContext.setInboundSAMLMessageId(artResolve.getID());
                 requestContext.setInboundSAMLMessageIssueInstant(artResolve.getIssueInstant());
 
@@ -223,8 +226,8 @@ public class ArtifactResolution extends AbstractSAML2ProfileHandler {
         BasicEndpointSelector endpointSelector = new BasicEndpointSelector();
         endpointSelector.setEndpointType(AssertionConsumerService.DEFAULT_ELEMENT_NAME);
         endpointSelector.setMetadataProvider(getMetadataProvider());
-        endpointSelector.setRelyingParty(requestContext.getPeerEntityMetadata());
-        endpointSelector.setRelyingPartyRole(requestContext.getPeerEntityRoleMetadata());
+        endpointSelector.setEntityMetadata(requestContext.getPeerEntityMetadata());
+        endpointSelector.setEntityRoleMetadata(requestContext.getPeerEntityRoleMetadata());
         endpointSelector.setSamlRequest(requestContext.getInboundSAMLMessage());
         endpointSelector.getSupportedIssuerBindings().addAll(getSupportedOutboundBindings());
         return endpointSelector.selectEndpoint();
@@ -279,7 +282,7 @@ public class ArtifactResolution extends AbstractSAML2ProfileHandler {
             implements SAML2ArtifactMessageContext<ArtifactResolve, ArtifactResponse, NameID> {
 
         /** Artifact to be resolved. */
-        private String artifact;
+        private AbstractSAML2Artifact artifact;
 
         /** Message referenced by the SAML artifact. */
         private SAMLObject referencedMessage;
@@ -289,7 +292,7 @@ public class ArtifactResolution extends AbstractSAML2ProfileHandler {
          * 
          * @return artifact to be resolved
          */
-        public String getArtifact() {
+        public AbstractSAML2Artifact getArtifact() {
             return artifact;
         }
 
@@ -298,7 +301,7 @@ public class ArtifactResolution extends AbstractSAML2ProfileHandler {
          * 
          * @param artifact artifact to be resolved
          */
-        public void setArtifact(String artifact) {
+        public void setArtifact(AbstractSAML2Artifact artifact) {
             this.artifact = artifact;
         }
 
index f753517..645dbf5 100644 (file)
@@ -441,8 +441,8 @@ public class SSOProfileHandler extends AbstractSAML2ProfileHandler {
         AuthnResponseEndpointSelector endpointSelector = new AuthnResponseEndpointSelector();
         endpointSelector.setEndpointType(AssertionConsumerService.DEFAULT_ELEMENT_NAME);
         endpointSelector.setMetadataProvider(getMetadataProvider());
-        endpointSelector.setRelyingParty(requestContext.getPeerEntityMetadata());
-        endpointSelector.setRelyingPartyRole(requestContext.getPeerEntityRoleMetadata());
+        endpointSelector.setEntityMetadata(requestContext.getPeerEntityMetadata());
+        endpointSelector.setEntityRoleMetadata(requestContext.getPeerEntityRoleMetadata());
         endpointSelector.setSamlRequest(requestContext.getInboundSAMLMessage());
         endpointSelector.getSupportedIssuerBindings().addAll(getSupportedOutboundBindings());
         return endpointSelector.selectEndpoint();