我正在尝试构建一个微服务单一标志,它从一个私钥中生成一个签名令牌。此令牌将用于访问微服务。到目前为止,我已经完成了这个部分的工作,并产生了一个令牌。
但是,当我试图用公钥验证它时,它似乎不起作用。
这些文件揭示的不多。https://jwt-auth.readthedocs.io/en/develop/lumen-installation/
所以问题是,如果它们有与私钥相关联的公钥,其他库可以验证JWT令牌吗?
发布于 2020-01-27 17:58:25
好的,你就是这样做的。
请按照上面的链接执行安装说明。
然后,转到这个页面,https://travistidwell.com/jsencrypt/demo/创建一个私钥和公钥(记住使用密钥大小为1024 -这就是我得到的)
将私有保存到生成令牌的项目/微服务中。
然后在该项目中转到config->jwt.php文件。
'algo' => env('JWT_ALGO', 'RS256'),否则它不会签名。的路径
然后,要创建您的令牌,可以使用以下内容:
$credentials = request(['email', 'password']);
try {
$token = $JWTAuth->attempt($credentials);
if(!$token) {
throw new AccessDeniedHttpException();
}
} catch (JWTException $e) {
throw new HttpException(500);
}
return response()->json([
'status' => 'ok',
'token' => $token
]);你得到你的令牌,你的令牌用私钥签名。
现在,您可以将此令牌用于在您的laravel设置之外的其他微服务。
如果您有另一个单独的设置(其他url)与laravel,这需要一个可信的令牌访问,然后有相同的设置(私钥在这里并不重要),但您的公钥是。
若要验证令牌,请添加以下代码。
JWTAuth::parseToken()->authenticate();显然,您可以通过添加声明等来扩展这一点。这是一个简单的设置。我希望这能帮上忙。
https://stackoverflow.com/questions/59913178
复制相似问题