Saltar al contenido
ecdsa.com
PyJWT (Python)Bibliotecas de JWT

Mensaje de error

Audience doesn't match

También se muestra como

  • jwt.exceptions.InvalidAudienceError: Audience doesn't match

PyJWT (Python) — jwt.exceptions.InvalidAudienceError

Qué significa

El token tiene un claim `aud` y le pasas `audience=` a `jwt.decode()`, pero ningún valor coincide. PyJWT acepta el token cuando al menos una de las audiencias del token es igual a una de las audiencias que permites; aquí no coincidió ninguna. La firma era válida: el token se emitió para otro destinatario.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Comparar el aud del token con tu audiencia

    Decodifica sin verificación solo para inspeccionar y luego verifica con el identificador exacto. Si el token se emitió para la audiencia equivocada, cambia la solicitud de token del cliente; si el identificador estaba mal escrito, cambia el verificador.

    python
    unverified = jwt.decode(token, options={"verify_signature": False})
    print(repr(unverified.get("aud")))  # str or list[str]
    
    claims = jwt.decode(
        token,
        signing_key,
        algorithms=["ES256"],
        audience="https://api.example.com/orders",  # must equal one of the token's aud values
        issuer="https://issuer.example.com/",
    )
  2. 2.

    Permitir varios identificadores explícitamente

    `audience` acepta una lista. Úsala cuando una API tenga legítimamente varios identificadores; nunca pases `options={"verify_aud": False}` para hacer desaparecer el error.

    python
    # Any one of these may appear in the token's aud.
    claims = jwt.decode(token, signing_key, algorithms=["ES256"], audience=["orders-api", "https://api.example.com/orders"])

Errores relacionados

Explorar toda la base de datos de errores de firma