[java-opensaml COMMIT] in /trunk/opensaml-saml-impl/src: main/java/org/opensaml/saml/saml2/wssecurity/messaging/impl/...
noreply at shibboleth.net
noreply at shibboleth.net
Wed Jun 24 18:59:35 EDT 2015
Author: putmanb
Date: Wed Jun 24 18:59:35 2015
New Revision: 4313
URL: http://svn.shibboleth.net/view/java-opensaml?rev=4313&view=rev
Log:
Add Assertion validator lookup function to WS-Security Assertion token message handler.
Unit tests of message handler.
Added:
trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/wssecurity/messaging/impl/WSSecuritySAML20AssertionTokenSecurityHandlerTest.java (with props)
Modified:
trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/wssecurity/messaging/impl/WSSecuritySAML20AssertionTokenSecurityHandler.java
trunk/opensaml-saml-impl/src/test/resources/data/org/opensaml/saml/saml2/wssecurity/messaging/impl/issuer.crt
trunk/opensaml-saml-impl/src/test/resources/data/org/opensaml/saml/saml2/wssecurity/messaging/impl/issuer.key
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=4313&r1=4312&r2=4313&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 Wed Jun 24 18:59:35 2015
@@ -26,6 +26,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.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;
@@ -70,8 +71,11 @@
/** Flag which indicates whether a failure of Assertion validation should be considered fatal. */
private boolean invalidFatal;
- /** The SAML 2.0 Assertion validator.*/
+ /** The SAML 2.0 Assertion validator, may be null.*/
private SAML20AssertionValidator assertionValidator;
+
+ /** The SAML 2.0 Assertion validator lookup function, may be null.*/
+ private Function<Pair<MessageContext, Assertion>, SAML20AssertionValidator> assertionValidatorLookup;
/** Function that builds a {@link ValidationContext} instance based on a
* {@link SAML20AssertionTokenValidationInput} instance. */
@@ -183,6 +187,27 @@
ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
assertionValidator = validator;
}
+
+ /**
+ * Get the Assertion validator lookup function.
+ *
+ * @return the Assertion validator lookup function, or null
+ */
+ @Nullable public Function<Pair<MessageContext, Assertion>, SAML20AssertionValidator> getAssertionValidatorLookup() {
+ return assertionValidatorLookup;
+ }
+
+ /**
+ * Set the Assertion validator lookup function.
+ *
+ * @param function the Assertion validator lookup function, may be null
+ */
+ public void setAssertionValidatorLookup(
+ @Nullable final Function<Pair<MessageContext, Assertion>, SAML20AssertionValidator> function) {
+ ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+ assertionValidatorLookup = function;
+ }
/** {@inheritDoc} */
protected void doInitialize() throws ComponentInitializationException {
@@ -197,7 +222,11 @@
}
if (getAssertionValidator() == null) {
- log.info("Assertion validator is null, must be resovleable from the MessageContext");
+ if (getAssertionValidatorLookup() == null) {
+ throw new ComponentInitializationException("Both Assertion validator and lookup function were null");
+ } else {
+ log.info("Assertion validator is null, must be resovleable via the lookup function");
+ }
}
}
@@ -223,13 +252,13 @@
WSSecurityContext wsContext = messageContext.getSubcontext(WSSecurityContext.class, true);
- SAML20AssertionValidator validator = getTokenValidator(messageContext);
- if (validator == null) {
- log.warn("No SAML20AssertionValidator was available, terminating");
- throw new MessageHandlerException("No SAML20AssertionValidator was available");
- }
-
for (Assertion assertion : assertions) {
+ SAML20AssertionValidator validator = resolveValidator(messageContext, assertion);
+ if (validator == null) {
+ log.warn("No SAML20AssertionValidator was available, terminating");
[... 54 lines stripped ...]
More information about the commits
mailing list