[java-identity-provider] branch master updated: OSJ-302: outgoing MDQ request may not use the correct Accept header

Brent Putman putmanb at georgetown.edu
Tue Mar 3 15:04:12 EST 2020


This is an automated email from the git hooks/post-receive script.

putmanb pushed a commit to branch master
in repository java-identity-provider.

View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=bb1ef9605f538224810083c87032b70bb0f521d5

The following commit(s) were added to refs/heads/master by this push:
       new  bb1ef96   OSJ-302: outgoing MDQ request may not use the correct Accept header
bb1ef96 is described below

commit bb1ef9605f538224810083c87032b70bb0f521d5
Author: Brent Putman <putmanb at georgetown.edu>
AuthorDate: Wed Feb 26 17:55:57 2020 -0500

    OSJ-302: outgoing MDQ request may not use the correct Accept header
---
 .../metadata/impl/DynamicHTTPMetadataProviderParser.java   | 10 ++++++++--
 .../metadata/DynamicHTTPMetadataProviderParserTest.java    | 14 ++++++++++++++
 ...dynamicMetadataQueryProtocolWithContentTypeOverride.xml | 14 ++++++++++++++
 3 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/impl/DynamicHTTPMetadataProviderParser.java b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/impl/DynamicHTTPMetadataProviderParser.java
index 466a193..3b6a198 100644
--- a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/impl/DynamicHTTPMetadataProviderParser.java
+++ b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/impl/DynamicHTTPMetadataProviderParser.java
@@ -67,7 +67,7 @@ public class DynamicHTTPMetadataProviderParser extends AbstractDynamicHTTPMetada
             final BeanDefinitionBuilder builder) {
         super.doNativeParse(element, parserContext, builder);
 
-        builder.addPropertyValue("requestURLBuilder", getRequestURLBuilder(element));
+        builder.addPropertyValue("requestURLBuilder", getRequestURLBuilder(element, builder));
 
     }
 
@@ -75,9 +75,11 @@ public class DynamicHTTPMetadataProviderParser extends AbstractDynamicHTTPMetada
      * Build and return an instance of the {@link java.util.function.Function} used as the request URL builder.
      * 
      * @param element the parent metadata provider element
+     * @param parentBuilder metadata provider element's bean builder
      * @return the function
      */
-    protected BeanDefinition getRequestURLBuilder(final Element element) {
+    // Checkstyle: MethodLength OFF
+    protected BeanDefinition getRequestURLBuilder(final Element element, final BeanDefinitionBuilder parentBuilder) {
         // Note: we have to do this BeanDefinitionBuilder business b/c for the template one, we need to
         // inject the VelocityEngine. Otherwise would be easier to just return the Function directly.
 
@@ -138,6 +140,9 @@ public class DynamicHTTPMetadataProviderParser extends AbstractDynamicHTTPMetada
             if (secondaryURLBuildersRef != null) {
                 builder.addConstructorArgReference(secondaryURLBuildersRef);
             }
+            if (!element.hasAttributeNS(null, "supportedContentTypes")) {
+                parentBuilder.addPropertyValue("supportedContentTypes", "application/samlmetadata+xml");
+            }
             return builder.getBeanDefinition();
         }
 
@@ -146,6 +151,7 @@ public class DynamicHTTPMetadataProviderParser extends AbstractDynamicHTTPMetada
                 BeanDefinitionBuilder.genericBeanDefinition(HTTPEntityIDRequestURLBuilder.class);
         return builder.getBeanDefinition();
     }
+    // Checkstyle: MethodLength ON
 
     /**
      * Parse the 'encodingStyle' attributes for Template element types.
diff --git a/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/DynamicHTTPMetadataProviderParserTest.java b/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/DynamicHTTPMetadataProviderParserTest.java
index c2f8996..3b926b8 100644
--- a/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/DynamicHTTPMetadataProviderParserTest.java
+++ b/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/DynamicHTTPMetadataProviderParserTest.java
@@ -41,6 +41,8 @@ import org.springframework.mock.env.MockPropertySource;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
+import com.google.common.collect.Lists;
+
 import net.shibboleth.utilities.java.support.repository.RepositorySupport;
 import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
 
@@ -248,6 +250,8 @@ public class DynamicHTTPMetadataProviderParserTest extends AbstractMetadataParse
         final FunctionDrivenDynamicHTTPMetadataResolver resolver = getBean(FunctionDrivenDynamicHTTPMetadataResolver.class, 
                 "dynamicMetadataQueryProtocol.xml", "beans.xml");
         
+        Assert.assertEquals(resolver.getSupportedContentTypes(), Lists.newArrayList("application/samlmetadata+xml"));
+
         final String entityID = "https://foo1.example.org/idp/shibboleth";
         
         final CriteriaSet criteriaSet = new CriteriaSet( new EntityIdCriterion(entityID));
@@ -258,6 +262,16 @@ public class DynamicHTTPMetadataProviderParserTest extends AbstractMetadataParse
     }
     
     @Test
+    public void testMDQWithContentTypeOverride() throws Exception {
+        final FunctionDrivenDynamicHTTPMetadataResolver resolver = getBean(FunctionDrivenDynamicHTTPMetadataResolver.class,
+                "dynamicMetadataQueryProtocolWithContentTypeOverride.xml", "beans.xml");
+
+        Assert.assertEquals(resolver.getSupportedContentTypes(), Lists.newArrayList("application/xml", "test/foo"));
+
+        // Note we can't actually execute the request as the test MDQ server only supports application/samlmetadata+xml
+    }
+
+    @Test
     public void testMDQWithSecondaryURLBuilderForArtifact() throws Exception {
         final FunctionDrivenDynamicHTTPMetadataResolver resolver = getBean(FunctionDrivenDynamicHTTPMetadataResolver.class, 
                 "dynamicMetadataQueryProtocolWithSecondaryURLBuilders.xml", "beans.xml");
diff --git a/idp-profile-spring/src/test/resources/net/shibboleth/idp/profile/spring/relyingparty/metadata/dynamicMetadataQueryProtocolWithContentTypeOverride.xml b/idp-profile-spring/src/test/resources/net/shibboleth/idp/profile/spring/relyingparty/metadata/dynamicMetadataQueryProtocolWithContentTypeOverride.xml
new file mode 100644
index 0000000..e108401
--- /dev/null
+++ b/idp-profile-spring/src/test/resources/net/shibboleth/idp/profile/spring/relyingparty/metadata/dynamicMetadataQueryProtocolWithContentTypeOverride.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata:MetadataProvider xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
+    xmlns:metadata="urn:mace:shibboleth:2.0:metadata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="urn:mace:shibboleth:2.0:metadata http://shibboleth.net/schema/idp/shibboleth-metadata.xsd
+                        urn:oasis:names:tc:SAML:2.0:metadata http://docs.oasis-open.org/security/saml/v2.0/saml-schema-metadata-2.0.xsd"
+
+    id="dynamicMDQ" xsi:type="metadata:DynamicHTTPMetadataProvider"
+    supportedContentTypes="application/xml test/foo" >
+
+        <metadata:MetadataQueryProtocol>
+            http://shibboleth.net:9000
+        </metadata:MetadataQueryProtocol>
+
+</metadata:MetadataProvider>

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list