This JWT verifier checks the signature but never asserts the token's intended recipient: the Auth0 JWT.require(alg)...build() chain pins no .withIssuer(...) and no .withAudience(...).
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 valid signature only proves the token was minted by whoever holds the key, not that it was issued by the expected authority or meant for THIS service. A token your provider issued for a different audience, or one minted by any party that shares the key, will still verify, enabling token replay across services (CWE-345). This is a common AI-generated mistake in Ktor jwt { verifier(...) } setups: the sample verifies the signature and stops there.
Pin the recipient before .build(): chain .withIssuer("https://your-idp") and .withAudience("your-api") on the JWT.require(...) builder.
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.kotlin.jwt.missing-issuer-audience -- <reason>