我无法从 JWT 验证 PHP 中的 RS256 签名。
我有
$to_verify = substr(Cookie::get('CF_Authorization'), 0, strrpos(Cookie::get('CF_Authorization'), "."));
$signature = base64_decode(explode('.', Cookie::get('CF_Authorization'))[2]);
return openssl_verify($to_verify, $signature, $cert, 'RSA-SHA256'));
我的部分问题是我不知道使用标题的最正确算法是“alg”:“RS256”。是这样的:
- OPENSSL_ALGO_SHA256
- “SHA256”
- “sha256”
- “RSA-SHA256”
- “sha256WithRSAEncryption”
- 还有什么?
我已经尝试了所有来自 php 文档的方法,听起来它们可能是正确的,但无论我尝试什么,它总是返回 0(未验证),但根据 jwt.io,我正在测试 jwt、签名和公钥with 是有效的。
我不确定我做错了什么。