[java-shib-common COMMIT] in /branches/REL_1: doc/RELEASE-NOTES.txt src/main/java/edu/internet2/middleware/shibboleth...

noreply at shibboleth.net noreply at shibboleth.net
Fri Jan 15 20:31:25 EST 2016


Author: putmanb
Date: Fri Jan 15 20:31:24 2016
New Revision: 1137

URL: http://svn.shibboleth.net/view/java-shib-common?rev=1137&view=rev
Log:
SC-204: Update RelyingPartySecurityPolicyResolver to evaluate anonymous relying party case

Modified:
    branches/REL_1/doc/RELEASE-NOTES.txt
    branches/REL_1/src/main/java/edu/internet2/middleware/shibboleth/common/relyingparty/RelyingPartySecurityPolicyResolver.java

Modified: branches/REL_1/doc/RELEASE-NOTES.txt
URL: http://svn.shibboleth.net/view/java-shib-common/branches/REL_1/doc/RELEASE-NOTES.txt?rev=1137&r1=1136&r2=1137&view=diff
==============================================================================
--- branches/REL_1/doc/RELEASE-NOTES.txt	(original)
+++ branches/REL_1/doc/RELEASE-NOTES.txt	Fri Jan 15 20:31:24 2016
@@ -1,6 +1,7 @@
 Changes in Release 1.4.5
 =============================================
 [SC-203] - Metadata Scope extension XMLObject impl fails on invalid regular expression value 
+[SC-204] - Update RelyingPartySecurityPolicyResolver to evaluate anonymous relying party case
 
 Changes in Release 1.4.4
 =============================================

Modified: branches/REL_1/src/main/java/edu/internet2/middleware/shibboleth/common/relyingparty/RelyingPartySecurityPolicyResolver.java
URL: http://svn.shibboleth.net/view/java-shib-common/branches/REL_1/src/main/java/edu/internet2/middleware/shibboleth/common/relyingparty/RelyingPartySecurityPolicyResolver.java?rev=1137&r1=1136&r2=1137&view=diff
==============================================================================
--- branches/REL_1/src/main/java/edu/internet2/middleware/shibboleth/common/relyingparty/RelyingPartySecurityPolicyResolver.java	(original)
+++ branches/REL_1/src/main/java/edu/internet2/middleware/shibboleth/common/relyingparty/RelyingPartySecurityPolicyResolver.java	Fri Jan 15 20:31:24 2016
@@ -19,20 +19,31 @@
 
 import java.util.Collections;
 
+import org.opensaml.saml2.metadata.EntityDescriptor;
+import org.opensaml.saml2.metadata.provider.MetadataProvider;
+import org.opensaml.saml2.metadata.provider.MetadataProviderException;
 import org.opensaml.ws.message.MessageContext;
 import org.opensaml.ws.security.SecurityPolicy;
 import org.opensaml.ws.security.SecurityPolicyResolver;
 import org.opensaml.xml.security.SecurityException;
 import org.opensaml.xml.util.DatatypeHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * A security policy resolver that selects the active security policy based on the inbound message issuer ID and the
  * communication profile used.
  */
 public class RelyingPartySecurityPolicyResolver implements SecurityPolicyResolver {
+    
+    /** Logger. */
+    private Logger log = LoggerFactory.getLogger(RelyingPartySecurityPolicyResolver.class);
 
     /** Relying party configuration manager. */
     private RelyingPartyConfigurationManager rpConfigManager;
+    
+    /** Metadata Provider. */
+    private MetadataProvider metadataProvider;
 
     /**
      * Constructor.
@@ -41,11 +52,24 @@
      *            not be null
      */
     public RelyingPartySecurityPolicyResolver(RelyingPartyConfigurationManager configManager) {
+        this(configManager, null);
+    }
+    
+    /**
+     * Constructor.
+     * 
+     * @param configManager configuration manager used to resolve relying party specific configuration information, may
+     *            not be null
+     * @param mdProvider metadata provider used to resolve relying party metadata, may be null
+     */
+    public RelyingPartySecurityPolicyResolver(RelyingPartyConfigurationManager configManager, 
+            MetadataProvider mdProvider) {
         if (configManager == null) {
-            throw new IllegalArgumentException("Relying party configuraiton manager may not be null");
+            throw new IllegalArgumentException("Relying party configuration manager may not be null");
         }
         
         rpConfigManager = configManager;
+        metadataProvider = mdProvider;
     }
 
     /** {@inheritDoc} */
@@ -57,23 +81,47 @@
     public SecurityPolicy resolveSingle(MessageContext messageContext) throws SecurityException {
         String peerEntityId = messageContext.getInboundMessageIssuer();
         if (DatatypeHelper.isEmpty(peerEntityId)) {
-            throw new SecurityException(
-                    "Unable to select security policy, ID of the peer unknown.");
+            throw new SecurityException("Unable to select security policy, ID of the peer unknown.");
         }
-
-        RelyingPartyConfiguration rpConfig = rpConfigManager.getRelyingPartyConfiguration(peerEntityId);
+        
+        RelyingPartyConfiguration rpConfig = null;
+        
+        if (metadataProvider != null) {
+            try {
+                EntityDescriptor entityDescriptor = metadataProvider.getEntityDescriptor(peerEntityId);
+                if (entityDescriptor == null) {
+                    log.warn("No metadata for relying party {}, treating party as anonymous for security policy",
+                            peerEntityId);

[... 36 lines stripped ...]


More information about the commits mailing list