[java-opensaml COMMIT] /trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/wssecurity/messaging/impl/WSSe...
noreply at shibboleth.net
noreply at shibboleth.net
Thu Jun 11 21:27:56 EDT 2015
Author: putmanb
Date: Thu Jun 11 21:27:56 2015
New Revision: 4301
URL: http://svn.shibboleth.net/view/java-opensaml?rev=4301&view=rev
Log:
Add a strategy for building a dynamic signature criteria set.
Modified:
trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/wssecurity/messaging/impl/WSSecuritySAML20AssertionTokenSecurityHandler.java
Modified: trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/wssecurity/messaging/impl/WSSecuritySAML20AssertionTokenSecurityHandler.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/wssecurity/messaging/impl/WSSecuritySAML20AssertionTokenSecurityHandler.java?rev=4301&r1=4300&r2=4301&view=diff
==============================================================================
--- trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/wssecurity/messaging/impl/WSSecuritySAML20AssertionTokenSecurityHandler.java (original)
+++ trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/wssecurity/messaging/impl/WSSecuritySAML20AssertionTokenSecurityHandler.java Thu Jun 11 21:27:56 2015
@@ -34,6 +34,7 @@
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
import net.shibboleth.utilities.java.support.collection.LazyList;
import net.shibboleth.utilities.java.support.collection.LazySet;
+import net.shibboleth.utilities.java.support.collection.Pair;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.component.ComponentSupport;
import net.shibboleth.utilities.java.support.logic.Constraint;
@@ -65,6 +66,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.common.base.Function;
import com.google.common.base.Strings;
/**
@@ -86,6 +88,9 @@
/** The SAML 2.0 Assertion validator.*/
private SAML20AssertionValidator assertionValidator;
+ /** A function for resolving the signature validation CriteriaSet for a particular function. */
+ private Function<Pair<MessageContext, Assertion>, CriteriaSet> signatureCriteriaSetFunction;
+
/** Constructor. */
public WSSecuritySAML20AssertionTokenSecurityHandler() {
@@ -93,6 +98,27 @@
setInvalidFatal(true);
}
+ /**
+ * Get the function for resolving the signature validation CriteriaSet for a particular function.
+ *
+ * @return a criteria set instance, or null
+ */
+ @Nullable public Function<Pair<MessageContext, Assertion>, CriteriaSet> getSignatureCriteriaSetFunction() {
+ return signatureCriteriaSetFunction;
+ }
+
+ /**
+ * Set the function for resolving the signature validation CriteriaSet for a particular function.
+ *
+ * @param function the resolving function, may be null
+ */
+ public void setSignatureCriteriaSetFunction(
+ @Nullable final Function<Pair<MessageContext, Assertion>, CriteriaSet> function) {
+ ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ signatureCriteriaSetFunction = function;
+ }
+
/**
* Get the HTTP servlet request being processed.
*
@@ -193,12 +219,17 @@
WSSecurityContext wsContext = messageContext.getSubcontext(WSSecurityContext.class, true);
+ SAML20AssertionValidator tokenValidator = getTokenValidator(messageContext);
+ if (tokenValidator == null) {
+ log.warn("No SAML20AssertionValidator was available, terminating");
+ throw new MessageHandlerException("No SAML20AssertionValidator was available");
+ }
+
for (Assertion assertion : assertions) {
ValidationContext validationContext = buildValidationContext(messageContext, assertion);
SAML20AssertionToken token = new SAML20AssertionToken(assertion);
- SAML20AssertionValidator tokenValidator = getTokenValidator(messageContext);
try {
ValidationResult validationResult = tokenValidator.validate(assertion, validationContext);
processResult(validationContext, validationResult, token, messageContext);
@@ -288,7 +319,7 @@
*
* @return the token validator
*/
- @Nonnull protected SAML20AssertionValidator getTokenValidator(@Nonnull final MessageContext messageContext) {
+ @Nullable protected SAML20AssertionValidator getTokenValidator(@Nonnull final MessageContext messageContext) {
//TODO support resolution from context, etc.
return assertionValidator;
}
@@ -383,16 +414,13 @@
@Nonnull final Assertion assertion) {
CriteriaSet criteriaSet = new CriteriaSet();
- //TODO need to be able to add statically-injected criteria?
-
- //TODO
- /*
- ShibbolethAssertionValidationContext shibAssertionValidationContext = null;
-
[... 15 lines stripped ...]
More information about the commits
mailing list