[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
Wed Sep 26 20:53:21 EDT 2012


Author: putmanb
Date: Wed Sep 26 20:53:21 2012
New Revision: 3116

URL: http://svn.shibboleth.net/view/java-shib-idp2?rev=3116&view=rev
Log:
SIDP-545: Automatic reloading of relying-party.xml results in errors

Modified:
    branches/REL_2/doc/RELEASE-NOTES.txt
    branches/REL_2/src/main/java/edu/internet2/middleware/shibboleth/idp/profile/AbstractSAMLProfileHandler.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=3116&r1=3115&r2=3116&view=diff
==============================================================================
--- branches/REL_2/doc/RELEASE-NOTES.txt (original)
+++ branches/REL_2/doc/RELEASE-NOTES.txt Wed Sep 26 20:53:21 2012
@@ -1,3 +1,7 @@
+Changes in Release 2.3.9
+=============================================
+[SIDP-545] - Automatic reloading of relying-party.xml results in errors
+
 Changes in Release 2.3.8
 =============================================
 - Pick up shib-common lib 1.3.7 that contains a fix for SC-183

Modified: branches/REL_2/src/main/java/edu/internet2/middleware/shibboleth/idp/profile/AbstractSAMLProfileHandler.java
URL: http://svn.shibboleth.net/view/java-shib-idp2/branches/REL_2/src/main/java/edu/internet2/middleware/shibboleth/idp/profile/AbstractSAMLProfileHandler.java?rev=3116&r1=3115&r2=3116&view=diff
==============================================================================
--- branches/REL_2/src/main/java/edu/internet2/middleware/shibboleth/idp/profile/AbstractSAMLProfileHandler.java (original)
+++ branches/REL_2/src/main/java/edu/internet2/middleware/shibboleth/idp/profile/AbstractSAMLProfileHandler.java Wed Sep 26 20:53:21 2012
@@ -194,9 +194,17 @@
         // It's advisable to cache the metadata cred resolver instance from the factory
         // for the life of the profile handler. See SIDP-428.
         synchronized (this) {
+            MetadataProvider metadataProvider = getMetadataProvider();
             if (metadataCredentialResolver == null) {
                 MetadataCredentialResolverFactory mcrFactory = MetadataCredentialResolverFactory.getFactory();
-                MetadataProvider metadataProvider = getMetadataProvider();
+                metadataCredentialResolver = mcrFactory.getInstance(metadataProvider);
+            } else if (metadataCredentialResolver.getMetadataProvider() != metadataProvider) {
+                // ...except we can't hold onto the resolver unconditionally, b/c the metadata provider we get from the relying party
+                // configuration manager can change during the life of the profile handler, e.g. when relying-party.xml
+                // is reloaded but handler.xml isn't. So check the current metadata provider against the one with which
+                // the resolver was constructed. See SIDP-545, SIDP-555.
+                log.debug("Detected a new metadata provider, replacing the metadata credential resolver instance");
+                MetadataCredentialResolverFactory mcrFactory = MetadataCredentialResolverFactory.getFactory();
                 metadataCredentialResolver = mcrFactory.getInstance(metadataProvider);
             }
         }



More information about the commits mailing list