トークンベースの認証を開始し、JWTを作成するための非常に単純なPHPスクリプトを作成しました。しかし、jwt.ioのデバッガで実行すると、署名は決して検証されません。PHPでJWT署名が検証されない
$secret = "super_secure_private_key";
function base64url_encode($data) {
return rtrim(strtr(base64_encode($data), "+/", "-_"), "=");
}
$header = base64url_encode(json_encode([
"alg" => "HS256",
"typ" => "JWT"
]));
$payload = base64url_encode(json_encode([
"name" => "James Walker",
"privileges" => "total"
]));
$signature = base64url_encode(hash_hmac("sha256", $header . "." . $payload, $secret));
$token = $header . "." . $payload . "." . $signature;
私の知る限り、私の実装では、JWTのフォーマットとインラインです。私は何かを見逃してしまったのですか? php-jwtを使って新しいトークンを生成し、それを検証しますか?
同じコードを使用して自分自身でトークンを確認することができますので、私の実装ではおそらく問題なく動作します。しかし、なぜjwt.ioが署名を検証していないのか分かりません。
ありがとうございました!それは今動作し、私の署名はすべて検証されます。とても有難い。 – Ilmiont
@Ilmiontハッピーコーディング* <帽子の先端> * – BeetleJuice