[java-identity-provider] branch master updated: IDP-1348 Restrict conditions when security name space warns.

Rod Widdowson rdw at steadingsoftware.com
Tue Oct 16 08:38:51 EDT 2018


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

rdw 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=56896c5afa9755868367b46ea7c2e08e6279562b

The following commit(s) were added to refs/heads/master by this push:
       new  56896c5   IDP-1348 Restrict conditions when security name space warns.
56896c5 is described below

commit 56896c5afa9755868367b46ea7c2e08e6279562b
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Tue Oct 16 13:37:27 2018 +0100

    IDP-1348 Restrict conditions when security name space warns.
    
    https://issues.shibboleth.net/jira/browse/IDP-1348
---
 .../impl/AbstractWarningSecurityParser.java        | 31 ++++++++++++++++++++--
 .../filter/SignatureValidationParserTest.java      |  6 +++++
 2 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/security/impl/AbstractWarningSecurityParser.java b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/security/impl/AbstractWarningSecurityParser.java
index a881dcf..5e4d51f 100644
--- a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/security/impl/AbstractWarningSecurityParser.java
+++ b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/security/impl/AbstractWarningSecurityParser.java
@@ -17,11 +17,15 @@
 
 package net.shibboleth.idp.profile.spring.relyingparty.security.impl;
 
+import javax.xml.namespace.QName;
+
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
+import org.w3c.dom.Node;
 
+import net.shibboleth.idp.profile.spring.relyingparty.metadata.AbstractMetadataProviderParser;
 import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
 import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
 
@@ -32,10 +36,31 @@ import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.Object
 @Deprecated
 public class AbstractWarningSecurityParser extends AbstractSingleBeanDefinitionParser {
 
+    /** Is this element ultimately parented by a MetadataFilter Element?
+     * @param element what to inspect
+     * @return if it is.
+     */
+    private boolean isDescendantOfSignatureFilter(final Element element) {
+        final Node parent = element.getParentNode();
+        if ((null == parent)||!(parent instanceof Element)) {
+            return false;
+        }
+        if (AbstractMetadataProviderParser.SECURITY_NAMESPACE.equals(parent.getNamespaceURI())) {
+            return isDescendantOfSignatureFilter((Element) parent);
+        }
+        final QName filterQname = AbstractMetadataProviderParser.METADATA_FILTER_ELEMENT_NAME;
+        return filterQname.getNamespaceURI().equals(parent.getNamespaceURI())&&
+                filterQname.getLocalPart().equals(parent.getLocalName());
+    }
+    
     /** {@inheritDoc} */
     @Override
     protected void doParse(final Element element, final BeanDefinitionBuilder builder) {
-        DeprecationSupport.warnOnce(ObjectType.ELEMENT, element.getPrefix() +":" + element.getLocalName(), null, null);
+        
+        if (!isDescendantOfSignatureFilter(element)){
+            DeprecationSupport.warnOnce(ObjectType.ELEMENT, 
+                    element.getPrefix() +":" + element.getLocalName(), null, null);
+        }
         super.doParse(element, builder);
     }
     
@@ -43,8 +68,10 @@ public class AbstractWarningSecurityParser extends AbstractSingleBeanDefinitionP
     @Override
     protected void doParse(final Element element, final ParserContext parserContext, 
             final BeanDefinitionBuilder builder) {
-        DeprecationSupport.warnOnce(ObjectType.ELEMENT, element.getPrefix() +":" + element.getLocalName(), 
+        if (!isDescendantOfSignatureFilter(element)){
+            DeprecationSupport.warnOnce(ObjectType.ELEMENT, element.getPrefix() +":" + element.getLocalName(), 
                 parserContext.getReaderContext().getResource().getDescription(), null);
+        }
         super.doParse(element, parserContext, builder);
     }
 }
diff --git a/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/filter/SignatureValidationParserTest.java b/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/filter/SignatureValidationParserTest.java
index d21f8b0..bb79261 100644
--- a/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/filter/SignatureValidationParserTest.java
+++ b/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/filter/SignatureValidationParserTest.java
@@ -20,6 +20,7 @@ package net.shibboleth.idp.profile.spring.relyingparty.metadata.filter;
 import java.io.IOException;
 
 import net.shibboleth.idp.profile.spring.relyingparty.metadata.AbstractMetadataParserTest;
+import net.shibboleth.utilities.java.support.primitive.DeprecationSupport;
 import net.shibboleth.utilities.java.support.resolver.ResolverException;
 
 import org.opensaml.saml.metadata.resolver.MetadataResolver;
@@ -28,6 +29,7 @@ import org.opensaml.saml.saml2.metadata.EntityDescriptor;
 import org.springframework.beans.factory.BeanDefinitionStoreException;
 import org.springframework.context.ApplicationContext;
 import org.testng.Assert;
+import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 
@@ -36,6 +38,10 @@ import org.testng.annotations.Test;
  */
 public class SignatureValidationParserTest extends AbstractMetadataParserTest {
 
+    @BeforeMethod public void clearDeprecateWarn() {
+        DeprecationSupport.clearWarningState();
+    }
+    
     @Test public void correctSig() throws IOException, ResolverException {
         MetadataResolver resolver =
                 getBean(MetadataResolver.class, "filter/switch-metadata.xml", "filter/switch.xml", "beans.xml");

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


More information about the commits mailing list