[java-shib-idp2 COMMIT] in /branches/REL_2: doc/RELEASE-NOTES.txt src/main/java/edu/internet2/middleware/shibboleth/i...

noreply at shibboleth.net noreply at shibboleth.net
Mon Mar 4 14:57:09 EST 2013


Author: scantor
Date: Mon Mar  4 14:57:09 2013
New Revision: 3143

URL: http://svn.shibboleth.net/view/java-shib-idp2?rev=3143&view=rev
Log:
SIDP-499 - Allow signed requests to bypass ACS verification

Modified:
    branches/REL_2/doc/RELEASE-NOTES.txt
    branches/REL_2/src/main/java/edu/internet2/middleware/shibboleth/idp/profile/saml2/SSOProfileHandler.java

Modified: branches/REL_2/doc/RELEASE-NOTES.txt
URL: http://svn.shibboleth.net/view/java-shib-idp2/branches/REL_2/doc/RELEASE-NOTES.txt?rev=3143&r1=3142&r2=3143&view=diff
==============================================================================
--- branches/REL_2/doc/RELEASE-NOTES.txt (original)
+++ branches/REL_2/doc/RELEASE-NOTES.txt Mon Mar  4 14:57:09 2013
@@ -1,6 +1,7 @@
 Changes in Release 2.4.0
 =============================================
 [JOST-162] - Globally enabling schema validation breaks the Signature metadata filter
+[SIDP-499] - Allow signed requests to bypass ACS verification
 [SIDP-545] - Automatic reloading of relying-party.xml results in errors
 [SIDP-557] - aacli.sh Exception (again)
 [SIDP-559] - Attribute queries are ignoring input designators

Modified: branches/REL_2/src/main/java/edu/internet2/middleware/shibboleth/idp/profile/saml2/SSOProfileHandler.java
URL: http://svn.shibboleth.net/view/java-shib-idp2/branches/REL_2/src/main/java/edu/internet2/middleware/shibboleth/idp/profile/saml2/SSOProfileHandler.java?rev=3143&r1=3142&r2=3143&view=diff
==============================================================================
--- branches/REL_2/src/main/java/edu/internet2/middleware/shibboleth/idp/profile/saml2/SSOProfileHandler.java (original)
+++ branches/REL_2/src/main/java/edu/internet2/middleware/shibboleth/idp/profile/saml2/SSOProfileHandler.java Mon Mar  4 14:57:09 2013
@@ -112,7 +112,7 @@
 
     /** URL of the authentication manager Servlet. */
     private String authenticationManagerPath;
-
+    
     /**
      * Constructor.
      * 
@@ -707,7 +707,8 @@
         AuthnRequest authnRequest = ((SSORequestContext) requestContext).getInboundSAMLMessage();
 
         Endpoint endpoint = null;
-        if (requestContext.getRelyingPartyConfiguration().getRelyingPartyId() == SAMLMDRelyingPartyConfigurationManager.ANONYMOUS_RP_NAME) {
+        if (requestContext.getRelyingPartyConfiguration().getRelyingPartyId() ==
+                SAMLMDRelyingPartyConfigurationManager.ANONYMOUS_RP_NAME) {
             if (authnRequest.getAssertionConsumerServiceURL() != null) {
                 endpoint = endpointBuilder.buildObject();
                 endpoint.setLocation(authnRequest.getAssertionConsumerServiceURL());
@@ -716,13 +717,23 @@
                 } else {
                     endpoint.setBinding(getSupportedOutboundBindings().get(0));
                 }
-                log.warn(
+                log.debug(
                         "Generating endpoint for anonymous relying party self-identified as '{}', ACS url '{}' and binding '{}'",
                         new Object[] { requestContext.getInboundMessageIssuer(), endpoint.getLocation(),
                                 endpoint.getBinding(), });
             } else {
-                log.warn("Unable to generate endpoint for anonymous party.  No ACS URL provided.");
-            }
+                log.warn("Unable to generate endpoint for anonymous party. No ACS URL provided.");
+            }
+        } else if (requestContext.isInboundSAMLMessageAuthenticated()
+                && ((SSOConfiguration) requestContext.getProfileConfiguration()).skipEndpointValidationWhenSigned()
+                && authnRequest.getAssertionConsumerServiceURL() != null && authnRequest.getProtocolBinding() != null) {
+            
+            endpoint = endpointBuilder.buildObject();
+            endpoint.setLocation(authnRequest.getAssertionConsumerServiceURL());
+            endpoint.setBinding(authnRequest.getProtocolBinding());
+            log.debug("Using endpoint specified in signed request from '{}' with ACS url '{}' and binding '{}'",
+                    new Object[] { requestContext.getInboundMessageIssuer(), endpoint.getLocation(),
+                        endpoint.getBinding(), });
         } else {
             AuthnResponseEndpointSelector endpointSelector = new AuthnResponseEndpointSelector();
             endpointSelector.setEndpointType(AssertionConsumerService.DEFAULT_ELEMENT_NAME);



More information about the commits mailing list