[java-opensaml] 02/11: Support additional Audience values for SAML 2 Assertion validation
Brent Putman
putmanb at georgetown.edu
Thu Jan 30 02:17:27 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=eae2cdddb2536b0405a1c936748a8a1411b703a5
commit eae2cdddb2536b0405a1c936748a8a1411b703a5
Author: Brent Putman <putmanb at georgetown.edu>
AuthorDate: Wed Jan 29 16:38:48 2020 -0500
Support additional Audience values for SAML 2 Assertion validation
---
.../DefaultAssertionValidationContextBuilder.java | 43 +++++++++++++++++++++-
1 file changed, 41 insertions(+), 2 deletions(-)
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/profile/impl/DefaultAssertionValidationContextBuilder.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/profile/impl/DefaultAssertionValidationContextBuilder.java
index c375527..0763973 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/profile/impl/DefaultAssertionValidationContextBuilder.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/profile/impl/DefaultAssertionValidationContextBuilder.java
@@ -94,6 +94,9 @@ public class DefaultAssertionValidationContextBuilder
/** Predicate for determining whether to include the self entityID as a valid Recipient. */
private Predicate<ProfileRequestContext> includeSelfEntityIDAsRecipient;
+ /** Function for determining additional valid audience values. */
+ private Function<ProfileRequestContext, Set<String>> additionalAudiences;
+
/** Resolver for security parameters context. */
private Function<ProfileRequestContext, SecurityParametersContext> securityParametersLookupStrategy;
@@ -208,6 +211,32 @@ public class DefaultAssertionValidationContextBuilder
}
/**
+ * Get the function for determining additional audience values.
+ *
+ * <p>
+ * Defaults to null.
+ * </p>
+ *
+ * @return the function
+ */
+ public Function<ProfileRequestContext,Set<String>> getAdditionalAudiences() {
+ return additionalAudiences;
+ }
+
+ /**
+ * Set the function for determining additional audience values.
+ *
+ * <p>
+ * Defaults to null.
+ * </p>
+ *
+ * @param function the function, may be null
+ */
+ public void setAdditionalAudiences(final @Nonnull Function<ProfileRequestContext,Set<String>> function) {
+ additionalAudiences = function;
+ }
+
+ /**
* Get the function for determining the max allowed time since authentication.
*
* <p>
@@ -565,9 +594,12 @@ public class DefaultAssertionValidationContextBuilder
* Get the valid audiences for attestation.
*
* <p>
- * This implementation returns a set containing the single entityID held by the message context's
- * {@link SAMLSelfEntityContext#getEntityId()}, if present. Otherwise an empty set is returned.
+ * This implementation returns a set containing the union of:
* </p>
+ * <ol>
+ * <li>the result of {@link #getSelfEntityID(AssertionValidationInput)}, if non-null</li>
+ * <li>the result of evaluating {@link #getAdditionalAudiences()}, if non-null</li>
+ * </ol>
*
* @param input the assertion validation input
*
@@ -581,6 +613,13 @@ public class DefaultAssertionValidationContextBuilder
validAudiences.add(selfEntityID);
}
+ if (getAdditionalAudiences() != null) {
+ final Set<String> additional = getAdditionalAudiences().apply(input.getProfileRequestContext());
+ if (additional != null) {
+ validAudiences.addAll(additional);
+ }
+ }
+
log.debug("Resolved valid audiences set: {}", validAudiences);
return validAudiences;
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list