[java-identity-provider COMMIT] in /trunk/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/impl: nameid/LegacyCano...

noreply at shibboleth.net noreply at shibboleth.net
Tue Mar 25 01:16:11 EDT 2014


Author: scantor
Date: Tue Mar 25 01:16:09 2014
New Revision: 5633

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=5633&view=rev
Log:
IDP-359 - add a policy predicate to SAML c14n actions, and lookup functions to access qualifiers from c14n context

Added:
    trunk/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/impl/profile/logic/NameQualifierFromCanonicalizationContextFunction.java   (with props)
    trunk/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/impl/profile/logic/SPNameQualifierFromCanonicalizationContextFunction.java   (with props)
Modified:
    trunk/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/impl/nameid/LegacyCanonicalization.java
    trunk/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/impl/nameid/NameIDCanonicalization.java
    trunk/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/impl/nameid/NameIdentifierCanonicalization.java

Modified: trunk/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/impl/nameid/LegacyCanonicalization.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/impl/nameid/LegacyCanonicalization.java?rev=5633&r1=5632&r2=5633&view=diff
==============================================================================
--- trunk/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/impl/nameid/LegacyCanonicalization.java (original)
+++ trunk/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/impl/nameid/LegacyCanonicalization.java Tue Mar 25 01:16:09 2014
@@ -34,6 +34,7 @@
 import net.shibboleth.idp.saml.authn.principal.NameIdentifierPrincipal;
 import net.shibboleth.idp.service.ReloadableService;
 import net.shibboleth.idp.service.ServiceableComponent;
+import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 
 import org.opensaml.profile.action.ActionSupport;
@@ -53,6 +54,12 @@
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(LegacyCanonicalization.class);
 
+    /**
+     * Predicate to validate {@link org.opensaml.saml.saml2.core.NameID} or
+     * {@link org.opensaml.saml.saml1.core.NameIdentifier} for permission to decode.
+     */
+    @Nullable private Predicate<ProfileRequestContext> nameIDPolicyPredicate;
+    
     /** Service used to get the resolver used to fetch attributes. */
     @Nonnull private final ReloadableService<AttributeResolver> attributeResolverService;
 
@@ -65,6 +72,30 @@
         attributeResolverService = Constraint.isNotNull(resolverService, "AttributeResolver cannot be null");
     }
 
+    /**
+     * Set a predicate used to evaluate the {@link org.opensaml.saml.saml2.core.NameID} or
+     * {@link org.opensaml.saml.saml1.core.NameIdentifier} to determine whether to proceed
+     * with the decoding process.
+     * 
+     * @param predicate predicate used to evaluate the identifier
+     */
+    public void setNameIDPolicyPredicate(@Nullable final Predicate<ProfileRequestContext> predicate) {
+        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        
+        nameIDPolicyPredicate = predicate;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected boolean doPreExecute(@Nonnull final ProfileRequestContext profileRequestContext,
+            @Nonnull final SubjectCanonicalizationContext c14nContext) throws SubjectCanonicalizationException {
+
+        if (nameIDPolicyPredicate != null && !nameIDPolicyPredicate.apply(profileRequestContext)) {
+            return false;
+        }
+        
+        return super.doPreExecute(profileRequestContext, c14nContext);
+    }
+    
     /** {@inheritDoc} */
     @Override protected void doExecute(@Nonnull final ProfileRequestContext profileRequestContext,
             @Nonnull final SubjectCanonicalizationContext c14nContext) throws SubjectCanonicalizationException {

Modified: trunk/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/impl/nameid/NameIDCanonicalization.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/impl/nameid/NameIDCanonicalization.java?rev=5633&r1=5632&r2=5633&view=diff
==============================================================================
--- trunk/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/impl/nameid/NameIDCanonicalization.java (original)
+++ trunk/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/impl/nameid/NameIDCanonicalization.java Tue Mar 25 01:16:09 2014
@@ -64,6 +64,9 @@
     /** Supplies logic for pre-execute test. */
     @Nonnull private final ActivationCondition embeddedPredicate;
 
+    /** Predicate to validate {@link NameID} for permission to decode. */
+    @Nullable private Predicate<ProfileRequestContext> nameIDPolicyPredicate;
+    
     /** Supplies logic for decoding the {@link NameID} into a principal. */
     @NonnullAfterInit private NameIDDecoder decoder;
 
@@ -94,6 +97,18 @@
         decoder = Constraint.isNotNull(theDecoder, "Name ID decoder cannot be null");
     }

[... 81 lines stripped ...]


More information about the commits mailing list