首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图验证JWT签名Tymon/jwt-auth laravel

试图验证JWT签名Tymon/jwt-auth laravel
EN

Stack Overflow用户
提问于 2020-01-25 20:35:04
回答 1查看 3.1K关注 0票数 1

我正在尝试构建一个微服务单一标志,它从一个私钥中生成一个签名令牌。此令牌将用于访问微服务。到目前为止,我已经完成了这个部分的工作,并产生了一个令牌。

但是,当我试图用公钥验证它时,它似乎不起作用。

这些文件揭示的不多。https://jwt-auth.readthedocs.io/en/develop/lumen-installation/

所以问题是,如果它们有与私钥相关联的公钥,其他库可以验证JWT令牌吗?

EN

回答 1

Stack Overflow用户

发布于 2020-01-27 17:58:25

好的,你就是这样做的。

请按照上面的链接执行安装说明。

然后,转到这个页面,https://travistidwell.com/jsencrypt/demo/创建一个私钥和公钥(记住使用密钥大小为1024 -这就是我得到的)

将私有保存到生成令牌的项目/微服务中。

然后在该项目中转到config->jwt.php文件。

  1. 将您设置为'algo' => env('JWT_ALGO', 'RS256'),否则它不会签名。
  2. 将您的"keys.private“设置为您的private.pem
  3. 的路径,将您的keys.public设置为public.pem

的路径

然后,要创建您的令牌,可以使用以下内容:

代码语言:javascript
复制
$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,这需要一个可信的令牌访问,然后有相同的设置(私钥在这里并不重要),但您的公钥是。

若要验证令牌,请添加以下代码。

代码语言:javascript
复制
JWTAuth::parseToken()->authenticate();

显然,您可以通过添加声明等来扩展这一点。这是一个简单的设置。我希望这能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59913178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档