Pular para o conteúdo
ecdsa.com
firebase/php-jwt (PHP)PHP

Mensagem de erro

"kid" invalid, unable to lookup correct key

Também aparece como

  • "kid" empty, unable to lookup correct key

A exceção “\"kid\" empty, unable to lookup correct key” é lançada para tokens sem o cabeçalho `kid` quando se passa um array de chaves.

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

O que significa

Você passou para `JWT::decode` um array de chaves (normalmente vindo de `JWK::parseKeySet`), e o array não tem nenhuma entrada para o `kid` do cabeçalho do token. O php-jwt seleciona a chave estritamente pelo `kid`; ele não tenta outras chaves. O erro parecido “\"kid\" empty” significa que o token não tem `kid` nenhum, o que um array de chaves não consegue resolver.

Por que acontece

Como corrigir

  1. 1.

    Usar CachedKeySet

    Ele guarda o JWKS em cache via PSR-6 e o busca de novo quando chega um `kid` desconhecido, com limite de taxa opcional para que valores aleatórios de `kid` não sobrecarreguem o emissor.

    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.

    Passar uma única Key para emissores sem kid

    Se o emissor tem exatamente uma chave e omite o `kid`, passe essa chave diretamente.

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

Erros relacionados

Ver toda a base de erros de assinatura