Backport support for aud list values into 0.3.x (support live-budget).
This commit is contained in:
@@ -140,11 +140,15 @@ proc validateJWT*(ctx: ApiAuthContext, jwt: JWT) =
|
||||
|
||||
if jwt.claims.aud.isNone: failAuth "Missing 'aud' claim."
|
||||
|
||||
if not ctx.validAudiences.contains(jwt.claims.aud.get):
|
||||
log.debug(
|
||||
"Valid audiences: $#\ttoken audience: $#" %
|
||||
[$ctx.validAudiences, jwt.claims.aud.get])
|
||||
failAuth "JWT is not for us (invalid audience)."
|
||||
if jwt.claims["aud"].get.kind == JString:
|
||||
# If the token is for a single audience, check that it is for us.
|
||||
if not ctx.validAudiences.contains(jwt.claims.aud.get):
|
||||
failAuth "JWT is not for us (invalid audience)."
|
||||
elif jwt.claims["aud"].get.kind == JArray:
|
||||
# If the token is for multiple audiences, check that at least one is for us.
|
||||
let auds = jwt.claims["aud"].get.getElems
|
||||
if not auds.anyIt(ctx.validAudiences.contains(it.getStr)):
|
||||
failAuth "JWT is not for us (invalid audience)."
|
||||
|
||||
let signingAlgorithm = jwt.header.alg.get
|
||||
|
||||
|
||||
Reference in New Issue
Block a user