[java-opensaml] 04/06: Add support for disabling check of SubjectConfirmationData at Address.
Brent Putman
putmanb at georgetown.edu
Fri Jan 24 23:06:09 EST 2020
This is an automated email from the git hooks/post-receive script.
putmanb pushed a commit to branch master
in repository java-opensaml.
View the commit online:
http://git.shibboleth.net/view/?p=java-opensaml.git;a=commit;h=b980fb01ffadea0525faaa84bdb8a42ac5782847
commit b980fb01ffadea0525faaa84bdb8a42ac5782847
Author: Brent Putman <putmanb at georgetown.edu>
AuthorDate: Wed Jan 22 22:26:18 2020 -0500
Add support for disabling check of SubjectConfirmationData at Address.
---
.../SAML2AssertionValidationParameters.java | 6 ++++++
.../impl/AbstractSubjectConfirmationValidator.java | 20 ++++++++++++++++++--
.../AbstractSubjectConfirmationValidatorTest.java | 12 ++++++++++++
3 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/assertion/SAML2AssertionValidationParameters.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/assertion/SAML2AssertionValidationParameters.java
index c346d6c..02f2fca 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/assertion/SAML2AssertionValidationParameters.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/assertion/SAML2AssertionValidationParameters.java
@@ -77,6 +77,12 @@ public final class SAML2AssertionValidationParameters {
public static final String SC_VALID_RECIPIENTS = STD_PREFIX + SC_INFIX + ".ValidRecipients";
/**
+ * Carries a {@link java.lang.Boolean} flag which indicates whether the
+ * {@link org.opensaml.saml.saml2.core.SubjectConfirmationData} address should be checked.
+ */
+ public static final String SC_CHECK_ADDRESS = STD_PREFIX + SC_INFIX + ".CheckAddress";
+
+ /**
* Carries a {@link java.util.Set}<code><</code>{@link java.net.InetAddress}<code>></code>
* whose values are the acceptable
* {@link org.opensaml.saml.saml2.core.SubjectConfirmationData} addresses.
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/assertion/impl/AbstractSubjectConfirmationValidator.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/assertion/impl/AbstractSubjectConfirmationValidator.java
index 071208d..4047b52 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/assertion/impl/AbstractSubjectConfirmationValidator.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/assertion/impl/AbstractSubjectConfirmationValidator.java
@@ -52,8 +52,13 @@ import org.slf4j.LoggerFactory;
* </p>
* <ul>
* <li>
+ * {@link SAML2AssertionValidationParameters#SC_CHECK_ADDRESS}:
+ * Optional.
+ * </li>
+ * <li>
* {@link SAML2AssertionValidationParameters#SC_VALID_ADDRESSES}:
- * Required.
+ * Required if {@link SAML2AssertionValidationParameters#SC_CHECK_ADDRESS} is true or omitted,
+ * otherwise optional.
* </li>
* <li>
* {@link SAML2AssertionValidationParameters#SC_VALID_RECIPIENTS}:
@@ -239,14 +244,24 @@ public abstract class AbstractSubjectConfirmationValidator implements SubjectCon
*
* @throws AssertionValidationException thrown if there is a problem determining the validity of the address
*/
+ // Checkstyle: CyclomaticComplexity OFF
@Nonnull protected ValidationResult validateAddress(@Nonnull final SubjectConfirmation confirmation,
@Nonnull final Assertion assertion, @Nonnull final ValidationContext context)
throws AssertionValidationException {
+
+ final Boolean checkAddress =
+ (Boolean) context.getStaticParameters().get(SAML2AssertionValidationParameters.SC_CHECK_ADDRESS);
+
+ if (checkAddress != null && !checkAddress) {
+ log.debug("SubjectConfirmationData at Address check is disabled, skipping");
+ return ValidationResult.VALID;
+ }
+
final String address = StringSupport.trimOrNull(confirmation.getSubjectConfirmationData().getAddress());
if (address == null) {
return ValidationResult.VALID;
}
-
+
log.debug("Evaluating SubjectConfirmationData at Address of : {}", address);
final InetAddress[] confirmingAddresses;
@@ -297,6 +312,7 @@ public abstract class AbstractSubjectConfirmationValidator implements SubjectCon
.getID()));
return ValidationResult.INVALID;
}
+ // Checkstyle: CyclomaticComplexity ON
/**
* Performs any further validation required for the specific confirmation method implementation.
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/assertion/impl/AbstractSubjectConfirmationValidatorTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/assertion/impl/AbstractSubjectConfirmationValidatorTest.java
index f4aa843..5fea727 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/assertion/impl/AbstractSubjectConfirmationValidatorTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/saml2/assertion/impl/AbstractSubjectConfirmationValidatorTest.java
@@ -79,6 +79,18 @@ public class AbstractSubjectConfirmationValidatorTest extends BaseAssertionValid
}
@Test
+ public void testInvalidAddressWithAddressCheckDisabled() throws AssertionValidationException {
+ subjectConfirmation.getSubjectConfirmationData().setAddress("1.2.3.4");
+
+ Map<String,Object> staticParams = buildBasicStaticParameters();
+ staticParams.put(SAML2AssertionValidationParameters.SC_CHECK_ADDRESS, Boolean.FALSE);
+ ValidationContext validationContext = new ValidationContext(staticParams);
+
+ Assert.assertEquals(validator.validate(subjectConfirmation, getAssertion(), validationContext),
+ ValidationResult.VALID);
+ }
+
+ @Test
public void testInvalidAddressParamType() throws AssertionValidationException {
Map<String,Object> staticParams = buildBasicStaticParameters();
// It should be a Set<String>, not a String
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list