Fix case where name identifier wasn't logged - SIDP-415
authorlajoie <lajoie@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Thu, 23 Sep 2010 11:12:30 +0000 (11:12 +0000)
committerlajoie <lajoie@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Thu, 23 Sep 2010 11:12:30 +0000 (11:12 +0000)
Fix metadata provider observer leak - SIDP-416

git-svn-id: https://subversion.switch.ch/svn/shibboleth/java-idp/branches/REL_2@2954 ab3bd59b-922f-494d-bb5f-6f0a3c29deca

doc/RELEASE-NOTES.txt
src/main/java/edu/internet2/middleware/shibboleth/idp/profile/AbstractSAMLProfileHandler.java
src/main/java/edu/internet2/middleware/shibboleth/idp/profile/saml1/AbstractSAML1ProfileHandler.java
src/main/java/edu/internet2/middleware/shibboleth/idp/profile/saml1/BaseSAML1ProfileRequestContext.java
src/main/java/edu/internet2/middleware/shibboleth/idp/profile/saml2/AbstractSAML2ProfileHandler.java

index d076071..a86e68a 100644 (file)
@@ -1,5 +1,6 @@
 Changes in Release 2.2.0
 =============================================
+[SIDP-416] - MetadataProviderObserver leak, new one added on every login
 [SIDP-415] - SAML name identifier value not logged in audit log
 [SIDP-413] - Change link of example login page
 [SIDP-411] - Check for loginContext != null at login.jsp
index ad7c032..c07964a 100644 (file)
@@ -36,6 +36,8 @@ import org.opensaml.saml2.metadata.RoleDescriptor;
 import org.opensaml.saml2.metadata.SSODescriptor;
 import org.opensaml.saml2.metadata.provider.MetadataProvider;
 import org.opensaml.saml2.metadata.provider.MetadataProviderException;
+import org.opensaml.security.MetadataCredentialResolver;
+import org.opensaml.security.MetadataCredentialResolverFactory;
 import org.opensaml.ws.message.encoder.MessageEncodingException;
 import org.opensaml.ws.security.SecurityPolicyResolver;
 import org.opensaml.ws.transport.InTransport;
@@ -178,6 +180,17 @@ public abstract class AbstractSAMLProfileHandler extends
     }
 
     /**
+     * A convenience method for obtaining a metadata credential resolver for the current metadata provider.
+     *
+     * @return the metadata credential resolver or null
+     */
+    public MetadataCredentialResolver getMetadataCredentialResolver() {
+        MetadataCredentialResolverFactory mcrFactory = MetadataCredentialResolverFactory.getFactory();
+        MetadataProvider metadataProvider = getMetadataProvider();
+        return mcrFactory.getInstance(metadataProvider);
+    }
+
+    /**
      * Gets the SAML message bindings that may be used by outbound messages.
      * 
      * @return SAML message bindings that may be used by outbound messages
index 3e7f0ea..4125766 100644 (file)
@@ -45,7 +45,6 @@ import org.opensaml.saml1.core.StatusCode;
 import org.opensaml.saml1.core.StatusMessage;
 import org.opensaml.saml1.core.Subject;
 import org.opensaml.saml1.core.SubjectConfirmation;
-import org.opensaml.saml1.core.SubjectStatement;
 import org.opensaml.saml2.metadata.SPSSODescriptor;
 import org.opensaml.ws.message.encoder.MessageEncodingException;
 import org.opensaml.xml.XMLObjectBuilder;
index 5d89042..85695a1 100644 (file)
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2010 University Corporation for Advanced Internet Development, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 
 package edu.internet2.middleware.shibboleth.idp.profile.saml1;
 
index 672282e..9e29035 100644 (file)
@@ -907,7 +907,7 @@ public abstract class AbstractSAML2ProfileHandler extends AbstractSAMLProfileHan
      * @throws SecurityException thrown if there is a problem resolving the credential from the peer's metadata
      */
     protected Credential getKeyEncryptionCredential(String peerEntityId) throws SecurityException {
-        MetadataCredentialResolver kekCredentialResolver = new MetadataCredentialResolver(getMetadataProvider());
+        MetadataCredentialResolver kekCredentialResolver = getMetadataCredentialResolver();
 
         CriteriaSet criteriaSet = new CriteriaSet();
         criteriaSet.add(new EntityIDCriteria(peerEntityId));