Saltar al contenido
ecdsa.com
firebase/php-jwt (PHP)PHP

Mensaje de error

"kid" invalid, unable to lookup correct key

También se muestra como

  • "kid" empty, unable to lookup correct key

Cuando se pasa un array de claves, los tokens sin `kid` en el encabezado provocan la excepción «"kid" empty, unable to lookup correct key».

firebase/php-jwt (PHP) — UnexpectedValueException from JWT::decode with a key array

Qué significa

Le pasas a `JWT::decode` un array de claves (normalmente obtenido de `JWK::parseKeySet`) y el array no tiene ninguna entrada para el `kid` del encabezado del token. php-jwt selecciona la clave estrictamente por `kid`; no prueba otras claves. El error relacionado «"kid" empty» significa que el token no tiene ningún `kid`, algo que un array de claves no puede resolver.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Usar CachedKeySet

    Guarda el JWKS en caché mediante PSR-6 y lo vuelve a descargar cuando llega un `kid` desconocido, con un límite de frecuencia opcional para que valores `kid` aleatorios no puedan saturar al emisor.

    php
    use Firebase\JWT\CachedKeySet;
    
    // Refetches the JWKS when a token names a kid the cache does not have (rate-limited).
    $keys = new CachedKeySet($jwksUri, $httpClient, $httpFactory, $cachePool, 3600, true);
    $claims = JWT::decode($token, $keys);
  2. 2.

    Pasar un único objeto Key para emisores sin kid

    Si el emisor tiene exactamente una clave y omite `kid`, pasa esa clave directamente.

    php
    // Issuer without kid and with exactly one key: pass a Key object, not an array.
    $claims = JWT::decode($token, new Key($publicKeyPem, 'ES256'));

Errores relacionados

Explorar toda la base de datos de errores de firma