[java-oidc-common] 01/02: Allow for missing aud claim.
Scott Cantor
cantor.2 at osu.edu
Mon Apr 25 17:12:02 UTC 2022
This is an automated email from the git hooks/post-receive script.
scantor pushed a commit to branch dev/JOIDC-7
in repository java-oidc-common.
View the commit online:
http://git.shibboleth.net/view/?p=java-oidc-common.git;a=commit;h=d7e96cb0d89a40a8bed3c249cb93f01f89c49335
commit d7e96cb0d89a40a8bed3c249cb93f01f89c49335
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Mon Apr 25 13:11:36 2022 -0400
Allow for missing aud claim.
---
.../jwt/claims/impl/AudienceClaimsValidator.java | 24 +++++++++++++++++-----
1 file changed, 19 insertions(+), 5 deletions(-)
diff --git a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AudienceClaimsValidator.java b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AudienceClaimsValidator.java
index 5ff8f5d..0a3e18d 100644
--- a/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AudienceClaimsValidator.java
+++ b/oidc-common-crypto-impl/src/main/java/net/shibboleth/oidc/security/jwt/claims/impl/AudienceClaimsValidator.java
@@ -35,8 +35,8 @@ import net.shibboleth.utilities.java.support.component.ComponentSupport;
import net.shibboleth.utilities.java.support.logic.Constraint;
/**
- * Verifies the Audience (aud) claim contains the client_id of this client (as registered at the issuer). See
- * section 3.1.3.7 of OpenID Connect core 1.0. The audience is determined at runtime using an appropriate strategy.
+ * Verifies the Audience (aud) claim contains the appropriate value.
+ * The audience is determined at runtime using an appropriate strategy.
*/
@ThreadSafeAfterInit
public class AudienceClaimsValidator extends AbstractClaimsValidator{
@@ -44,6 +44,8 @@ public class AudienceClaimsValidator extends AbstractClaimsValidator{
/** Strategy to find the audience value from the context.*/
@NonnullAfterInit private BiFunction<ProfileRequestContext,JWTClaimsSet, String> audienceLookupStrategy;
+ /** Allow a missing aud claim. */
+ private boolean allowMissing;
/** {@inheritDoc} */
@Override
@@ -66,6 +68,19 @@ public class AudienceClaimsValidator extends AbstractClaimsValidator{
audienceLookupStrategy = Constraint.isNotNull(strategy, "Audience lookup strategy can not be null");
}
+
+ /**
+ * Set whether a missing 'aud' claim is valid or not.
+ *
+ * <p>Defaults to false.</p>
+ *
+ * @param flag flag to set
+ *
+ * @since 2.1.0
+ */
+ public void setAllowMissing(final boolean flag) {
+ allowMissing = flag;
+ }
@Override
protected void doValidate(@Nonnull final JWTClaimsSet claims, @Nonnull final ProfileRequestContext context)
@@ -73,7 +88,7 @@ public class AudienceClaimsValidator extends AbstractClaimsValidator{
final String acceptedAudience = audienceLookupStrategy.apply(context,claims);
if (acceptedAudience == null) {
- throw new JWTValidationException("Audience value not present in the context");
+ throw new JWTValidationException("Audience value not returned by lookup function");
}
final List<String> audList = claims.getAudience();
@@ -88,10 +103,9 @@ public class AudienceClaimsValidator extends AbstractClaimsValidator{
if (!audMatch) {
throw new JWTValidationException("JWT audience rejected: " + audList);
}
- } else {
+ } else if (!allowMissing) {
throw new JWTValidationException("JWT missing required audience");
}
-
}
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list