概要
PHPでJWTの仕組みを実装する場合、firebase/php-jwtのライブラリが使用されることがあると思います。このライブラリを使用して、JWTのトークン作成からdecodeまでの実装はPHP: JWT を使った認証の記事が、参考になると思います。
さて、実際にトークンのdecodeを行う時に以下のような実装を行ったところ、 { "status": "\"kid\" empty, unable to lookup correct key" }
というエラーが発生しました。
$decodedResult = JWT::decode($token, env('JWT_SECRET_KEY'), ['HS256']);
なお、今回使用したライブラリのバージョンはv6.3.0
です。
原因
こちらのstackoverflowの記事によると、キーの指定にFirebase\JWT\Key
のクラスを使用する必要になったとのこと。(どのバージョンからかは調べてないです・・)
stackoverflowにもGoogle keeps changing stuff and breaking backwards compatibility with no respect of users. I find it extremely rude of them
というコメントがある通り、周知とかされずどこかでしれっと変わったのかもしれません。。
対応
以下のようにdecodeの実装をすればOKです。
$decodedResult = JWT::decode($token, new Key(env('JWT_SECRET_KEY'), 'HS256'));