[java-opensaml COMMIT] in /trunk: opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/assertion/SAML20AssertionVa...
noreply at shibboleth.net
noreply at shibboleth.net
Fri Jun 5 14:30:45 EDT 2015
Author: putmanb
Date: Fri Jun 5 14:30:45 2015
New Revision: 4287
URL: http://svn.shibboleth.net/view/java-opensaml?rev=4287&view=rev
Log:
Add debug logging of the Assertion being validated along with the params from the validation context.
Modified:
trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/assertion/SAML20AssertionValidator.java
trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/assertion/BaseAssertionValidationTest.java
Modified: trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/assertion/SAML20AssertionValidator.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/assertion/SAML20AssertionValidator.java?rev=4287&r1=4286&r2=4287&view=diff
==============================================================================
--- trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/assertion/SAML20AssertionValidator.java (original)
+++ trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/assertion/SAML20AssertionValidator.java Fri Jun 5 14:30:45 2015
@@ -27,10 +27,13 @@
import net.shibboleth.utilities.java.support.collection.LazyMap;
import net.shibboleth.utilities.java.support.primitive.StringSupport;
import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
+import net.shibboleth.utilities.java.support.xml.SerializeSupport;
import org.joda.time.DateTime;
import org.joda.time.chrono.ISOChronology;
import org.opensaml.core.criterion.EntityIdCriterion;
+import org.opensaml.core.xml.io.MarshallingException;
+import org.opensaml.core.xml.util.XMLObjectSupport;
import org.opensaml.saml.common.SAMLVersion;
import org.opensaml.saml.common.assertion.AssertionValidationException;
import org.opensaml.saml.common.assertion.ValidationContext;
@@ -50,6 +53,7 @@
import org.opensaml.xmlsec.signature.support.SignatureTrustEngine;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.w3c.dom.Element;
/** A validator used to evaluate version 2.0 {@link Assertion}s. */
public class SAML20AssertionValidator {
@@ -180,9 +184,20 @@
return clockSkew;
}
- /** {@inheritDoc} */
+ /**
+ * Validate the supplied SAML 2 {@link Assertion}, using the parameters from the supplied {@link ValidationContext}.
+ *
+ * @param assertion the assertion being evaluated
+ * @param context the current validation context
+ *
+ * @return the validation result
+ *
+ * @throws AssertionValidationException if there is a fatal error evaluating the validity of the assertion
+ */
@Nonnull public ValidationResult validate(@Nonnull final Assertion assertion,
@Nonnull final ValidationContext context) throws AssertionValidationException {
+
+ log(assertion, context);
ValidationResult result = validateVersion(assertion, context);
if (result != ValidationResult.VALID) {
@@ -205,6 +220,25 @@
}
return validateStatements(assertion, context);
+ }
+
+ /**
+ * Log the Assertion which is being validated, along with the supplied validation context parameters.
+ *
+ * @param assertion the SAML 2 Assertion being validated
+ * @param context
+ */
+ protected void log(@Nonnull final Assertion assertion, @Nonnull final ValidationContext context) {
+ if (log.isDebugEnabled()) {
+ try {
+ final Element dom = XMLObjectSupport.marshall(assertion);
+ log.debug("SAML 2 Assertion being validated:\n{}", SerializeSupport.prettyPrintXML(dom));
+ } catch (final MarshallingException e) {
+ log.error("Unable to marshall SAML 2 Assertion for logging purposes", e);
+ }
+ log.debug("SAML 2 Assertion ValidationContext - static parameters: {}", context.getStaticParameters());
+ log.debug("SAML 2 Assertion ValidationContext - dynamic parameters: {}", context.getDynamicParameters());
+ }
}
/**
@@ -471,13 +505,17 @@
Subject assertionSubject = assertion.getSubject();
if (assertionSubject == null) {
+ log.debug("Assertion contains no Subject, skipping subject confirmation");
return ValidationResult.VALID;
}
List<SubjectConfirmation> confirmations = assertionSubject.getSubjectConfirmations();
if (confirmations == null || confirmations.isEmpty()) {
+ log.debug("Assertion contains no SubjectConfirmations, skipping subject confirmation");
return ValidationResult.VALID;
}
+
+ log.debug("Assertion contains at least 1 SubjectConfirmation, proceeding with subject confirmation");
for (SubjectConfirmation confirmation : confirmations) {
SubjectConfirmationValidator validator = subjectConfirmationValidators.get(confirmation.getMethod());
Modified: trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/assertion/BaseAssertionValidationTest.java
[... 13 lines stripped ...]
More information about the commits
mailing list