MEDIUM AI PREVALENCE: MEDIUM auth.jwt.jose-no-audience
A JWT is verified with jose jwtVerify(...) but no audience option is passed, so the aud claim is never checked.
Why AI tools produce this: AI coding tools produce this regularly, typically when prompted for a shortcut or a quick fix.
Why this matters
A token minted for another service that trusts the same issuer or signing key can then be replayed here: a confused deputy (CWE-345). For an MCP or OAuth 2.1 resource server this is exactly the RFC 9068 / RFC 8707 audience binding the spec requires.
Pass the audience you expect (your resource identifier): await jwtVerify(token, JWKS, { audience: 'https://mcp.example.com/mcp' });
VULNERABLE
SAFE
Suppressing this rule
If a finding is a genuine false positive, scope the suppression to the exact line and leave a reason, never disable the rule project-wide. Disable directives are line-scoped by design.
// oauthlint-disable-next-line auth.jwt.jose-no-audience -- <reason>