我正在尝试在PHP中使用HMAC256生成JWT。但是我注意到响应返回无效/不正确的值。我比较了智威汤逊网站https://jwt.io/#debugger-io中的值,这就是为什么我说它是不正确的。
$token = '*******-****-****-****-*********';
$header = array(
"alg" => "HS256",
"typ" => "JWT"
);
$header = json_encode($header);
$header = base64_encode($header);
$payload = array(
"id" => "XXXX"
);
$payload = json_encode($payload);
$payload = base64_encode($payload);
$payload = str_replace('==', '', $payload);
$toHash = $header .'.'. $payload;
$signature = hash_hmac('sha256', $toHash, $token, true);
$signature = base64_encode($signature);
// yzt9U/pSc+PFnXHqKIvMDEkMhlUnVL6RuNtqciAPsXw= (Token generated in PHP)
// yzt9U_pSc-PFnXHqKIvMDEkMhlUnVL6RuNtqciAPsXw (Token generated in JWT website)
Token应与JWT中生成的相同。
发布于 2020-10-21 21:10:36
我在这里为每个人张贴我的答案。
public function base64url_encode($data) {
$data = str_replace(array('+', '/'), array('-', '_'), base64_encode($data));
return $data;
}
https://stackoverflow.com/questions/64464086
复制相似问题