[java-opensaml COMMIT] in /trunk/opensaml-saml-impl/src: main/java/org/opensaml/saml/metadata/resolver/impl/AbstractD...

noreply at shibboleth.net noreply at shibboleth.net
Mon Nov 7 17:59:28 EST 2016


Author: putmanb
Date: Mon Nov  7 17:59:28 2016
New Revision: 4571

URL: http://svn.shibboleth.net/view/java-opensaml?rev=4571&view=rev
Log:
OSJ-184: Setting persistentCacheManagerDirectory breaks dynamic metadata resolver

Ensure that the cloned object that we effectively filter and then use as the live object
preserves the DOM, rooted in a new document. This is necessary so that things like signature
validation still work.

Modified:
    trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolver.java
    trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolverTest.java

Modified: trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolver.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolver.java?rev=4571&r1=4570&r2=4571&view=diff
==============================================================================
--- trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolver.java	(original)
+++ trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolver.java	Mon Nov  7 17:59:28 2016
@@ -720,7 +720,7 @@
             //   1) the root doesn't expose its source byte[] via object metadata, and
             //   2) the object can't be successfully round-tripped (e.g signatures).
             try {
-                return XMLObjectSupport.cloneXMLObject(input, CloneOutputOption.DropDOM);
+                return XMLObjectSupport.cloneXMLObject(input, CloneOutputOption.RootDOMInNewDocument);
             } catch (MarshallingException | UnmarshallingException e) {
                 log.warn("Error cloning XMLObject, will use input root object as filter target", e);
                 return input;

Modified: trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolverTest.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolverTest.java?rev=4571&r1=4570&r2=4571&view=diff
==============================================================================
--- trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolverTest.java	(original)
+++ trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolverTest.java	Mon Nov  7 17:59:28 2016
@@ -19,6 +19,9 @@
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.security.KeyPair;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Timer;
@@ -31,10 +34,25 @@
 import org.opensaml.core.xml.persist.MapLoadSaveManager;
 import org.opensaml.core.xml.persist.XMLObjectLoadSaveManager;
 import org.opensaml.core.xml.util.XMLObjectSupport;
+import org.opensaml.saml.metadata.resolver.filter.impl.SignatureValidationFilter;
 import org.opensaml.saml.metadata.resolver.impl.AbstractDynamicMetadataResolver.DynamicEntityBackingStore;
 import org.opensaml.saml.saml2.metadata.EntityDescriptor;
+import org.opensaml.security.SecurityException;
+import org.opensaml.security.credential.Credential;
+import org.opensaml.security.credential.CredentialSupport;
+import org.opensaml.security.credential.impl.StaticCredentialResolver;
+import org.opensaml.security.crypto.JCAConstants;
+import org.opensaml.security.crypto.KeySupport;
+import org.opensaml.xmlsec.SignatureSigningParameters;
+import org.opensaml.xmlsec.config.DefaultSecurityConfigurationBootstrap;
+import org.opensaml.xmlsec.signature.support.SignatureConstants;
+import org.opensaml.xmlsec.signature.support.SignatureException;
+import org.opensaml.xmlsec.signature.support.SignatureSupport;
+import org.opensaml.xmlsec.signature.support.SignatureTrustEngine;
+import org.opensaml.xmlsec.signature.support.impl.ExplicitKeySignatureTrustEngine;
 import org.testng.Assert;
 import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
@@ -60,13 +78,39 @@
     private String id1, id2, id3;
     private EntityDescriptor ed1, ed2, ed3;
     
+    private Credential signingCred;
+    private SignatureSigningParameters signingParams;
+    private SignatureTrustEngine signatureTrustEngine;
+    private SignatureValidationFilter signatureValidationFilter;
+    
+    @BeforeClass
+    protected void setUpSigningSupport() throws NoSuchAlgorithmException, NoSuchProviderException {
+        KeyPair kp = KeySupport.generateKeyPair(JCAConstants.KEY_ALGO_RSA, 1024, null);
+        signingCred = CredentialSupport.getSimpleCredential(kp.getPublic(), kp.getPrivate());
+        

[... 97 lines stripped ...]


More information about the commits mailing list