[java-identity-provider] branch master updated: Add mapped tag variant for relying party overrides.

Scott Cantor cantor.2 at osu.edu
Fri May 17 14:43:35 EDT 2019


This is an automated email from the git hooks/post-receive script.

scantor pushed a commit to branch master
in repository java-identity-provider.

View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=97ccfd1b20a9e12bbfb5bd01834f941e63e81872

The following commit(s) were added to refs/heads/master by this push:
       new  97ccfd1   Add mapped tag variant for relying party overrides.
97ccfd1 is described below

commit 97ccfd1b20a9e12bbfb5bd01834f941e63e81872
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Fri May 17 14:43:30 2019 -0400

    Add mapped tag variant for relying party overrides.
---
 .../resources/system/conf/relying-party-system.xml |  5 ++++
 .../impl/RelyingPartyConfigurationSupport.java     | 30 ++++++++++++++++++++++
 2 files changed, 35 insertions(+)

diff --git a/idp-conf/src/main/resources/system/conf/relying-party-system.xml b/idp-conf/src/main/resources/system/conf/relying-party-system.xml
index 6695ec7..eee31bd 100644
--- a/idp-conf/src/main/resources/system/conf/relying-party-system.xml
+++ b/idp-conf/src/main/resources/system/conf/relying-party-system.xml
@@ -43,6 +43,11 @@
         class="net.shibboleth.idp.saml.relyingparty.impl.RelyingPartyConfigurationSupport" factory-method="byTag"
         c:trim="false" c:matchAll="false" />
 
+    <!-- Parent bean for RelyingParty overrides based on activation by tag. -->
+    <bean id="RelyingPartyByMappedTag" abstract="true" parent="RelyingParty"
+        class="net.shibboleth.idp.saml.relyingparty.impl.RelyingPartyConfigurationSupport" factory-method="byMappedTag"
+        c:trim="false" c:matchAll="false" />
+
     <bean id="TagCandidate" abstract="true"
         class="org.opensaml.saml.common.profile.logic.EntityAttributesPredicate.Candidate" />
         
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/relyingparty/impl/RelyingPartyConfigurationSupport.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/relyingparty/impl/RelyingPartyConfigurationSupport.java
index 4e8a007..7ba7863 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/relyingparty/impl/RelyingPartyConfigurationSupport.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/relyingparty/impl/RelyingPartyConfigurationSupport.java
@@ -33,6 +33,7 @@ import org.opensaml.saml.saml2.metadata.EntityDescriptor;
 import net.shibboleth.idp.profile.logic.RelyingPartyIdPredicate;
 import net.shibboleth.idp.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.idp.saml.profile.context.navigate.SAMLMetadataContextLookupFunction;
+import net.shibboleth.idp.saml.profile.logic.MappedEntityAttributesPredicate;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.logic.StrategyIndirectedPredicate;
@@ -141,4 +142,33 @@ public final class RelyingPartyConfigurationSupport {
         return config;
     }
 
+    /**
+     * A shorthand method for constructing a {@link RelyingPartyConfiguration} with an activation condition based on
+     * a {@link MappedEntityAttributesPredicate}.
+     * 
+     * @param candidates the candidate rules
+     * @param trim true iff tag values in metadata should be trimmed before comparison
+     * @param matchAll true iff all the candidate rules are required to match
+     * 
+     * @return  a default-constructed configuration with the appropriate condition set
+     */
+    @Nonnull public static RelyingPartyConfiguration byMappedTag(
+            @Nonnull @NonnullElements final Collection<Candidate> candidates, final boolean trim,
+            final boolean matchAll) {
+        Constraint.isNotNull(candidates, "Candidate list cannot be null");
+        
+        // We adapt an OpenSAML Predicate applying to an EntityDescriptor by indirecting the lookup of the
+        // EntityDescriptor to a lookup sequence of PRC -> RPC -> SAMLMetadataContext -> EntityDescriptor.
+        
+        final StrategyIndirectedPredicate<ProfileRequestContext,EntityDescriptor> indirectPredicate =
+                new StrategyIndirectedPredicate<>(
+                        new EntityDescriptorLookupFunction().compose(new SAMLMetadataContextLookupFunction()),
+                        new MappedEntityAttributesPredicate(candidates, trim, matchAll));
+        
+        final RelyingPartyConfiguration config = new RelyingPartyConfiguration();
+        config.setActivationCondition(indirectPredicate);
+
+        return config;
+    }
+
 }
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list