[java-identity-provider COMMIT] /trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/po...

noreply at shibboleth.net noreply at shibboleth.net
Tue Sep 23 12:44:34 EDT 2014


Author: scantor
Date: Tue Sep 23 12:44:33 2014
New Revision: 6560

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=6560&view=rev
Log:
Add group walk to RegistrationInfo policy rule.

Modified:
    trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/RegistrationAuthorityPolicyRule.java

Modified: trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/RegistrationAuthorityPolicyRule.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/RegistrationAuthorityPolicyRule.java?rev=6560&r1=6559&r2=6560&view=diff
==============================================================================
--- trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/RegistrationAuthorityPolicyRule.java (original)
+++ trunk/idp-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/RegistrationAuthorityPolicyRule.java Tue Sep 23 12:44:33 2014
@@ -26,6 +26,7 @@
 import org.opensaml.saml.common.messaging.context.SAMLMetadataContext;
 import org.opensaml.saml.ext.saml2mdrpi.RegistrationInfo;
 import org.opensaml.saml.saml2.common.Extensions;
+import org.opensaml.saml.saml2.metadata.EntitiesDescriptor;
 import org.opensaml.saml.saml2.metadata.EntityDescriptor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -90,28 +91,39 @@
 
         final SAMLMetadataContext metadataContext = filterContext.getRequesterMetadataContext();
         if (null == metadataContext) {
-            log.info("{} Filtering on registration, but no metadata context available", getLogPrefix());
+            log.debug("{} Filtering on registration, but no metadata context available", getLogPrefix());
             return null;
         }
 
         final EntityDescriptor spEntity = metadataContext.getEntityDescriptor();
         if (null == spEntity) {
-            log.info("Filtering on registration, but no peer metadata available");
+            log.debug("Filtering on registration, but no peer metadata available");
             return null;
         }
 
-        final Extensions extensions = spEntity.getExtensions();
-        if (null == extensions) {
-            log.info("Filtering on registration, but no peer extensions available");
-            return null;
+        Extensions extensions = spEntity.getExtensions();
+        if (null != extensions) {
+            for (final XMLObject object : extensions.getUnknownXMLObjects(RegistrationInfo.DEFAULT_ELEMENT_NAME)) {
+                if (object instanceof RegistrationInfo) {
+                    return (RegistrationInfo) object;
+                }
+            }
+        }
+        
+        EntitiesDescriptor group = (EntitiesDescriptor) spEntity.getParent();
+        while (null != group) {
+            extensions = group.getExtensions();
+            if (null != extensions) {
+                for (final XMLObject object : extensions.getUnknownXMLObjects(RegistrationInfo.DEFAULT_ELEMENT_NAME)) {
+                    if (object instanceof RegistrationInfo) {
+                        return (RegistrationInfo) object;
+                    }
+                }
+            }
+            group = (EntitiesDescriptor) group.getParent();
         }
 
-        for (XMLObject object : extensions.getUnknownXMLObjects()) {
-            if (object instanceof RegistrationInfo) {
-                return (RegistrationInfo) object;
-            }
-        }
-        log.info("Filtering on registration, but no RegistrationInfo available");
+        log.debug("Filtering on registration, but no RegistrationInfo available");
         return null;
     }
 



More information about the commits mailing list