我有一个API端点,该端点接受用于授权目的的传入JWT承载令牌。我想在使用它之前先对其进行任何篡改。我可以访问API中的私钥。因此,颁发者和接收者(我的API)都拥有签名签名所用的秘密。
因此,在接收到JWT作为我的API的承载令牌后-如果我可以解析传入的JWT的三个组成部分(标头,正文和签名),并以某种方式检查传入的加密私钥是否与我加密的API相同私钥(即双方签名都匹配)-那么令牌是好的,否则是不好的。
我需要在PHP中执行此操作。我知道为此使用的第三方库,但我不希望所有功能和复杂性-仅检查签名。
这里有一些伪装作为起点:-
if ($this->jwt_token) {
list($header, $body, $signature) = explode('.', $this->jwt_token);
$data = $header .'.'. $body;
$private_key = "secret";
$hashedData = hash('RSA256', $data, $private_key);
if($hashedData === $signature){
// signature verified, token is good
}else{
// token has been tampered with
}
}
另一件事是,我的API本地没有RSA256
密码吗?您能否提供一些指导-非图书馆解决方案,或者如果需要的话,就这样吧!