php - 试图验证 JWT 签名 Tymon/jwt-auth laravel
问题描述
我正在尝试构建一个从私钥生成签名令牌的微服务单点登录。该令牌将用于访问微服务。到目前为止,我已经让这部分工作并生成了一个令牌。
但是,当我尝试使用公钥验证它时,它似乎不起作用。
文件没有透露太多。https://jwt-auth.readthedocs.io/en/develop/lumen-installation/
所以问题是,如果其他库拥有与私钥相关联的公钥,是否可以验证 JWT 令牌?
解决方案
好的,这就是你的做法。
按照上面链接的安装说明进行操作。
然后,转到此页面https://travistidwell.com/jsencrypt/demo/ 创建一个私钥和公钥(记住使用密钥大小 1024 - 这就是我想要的)
将私有文件保存到生成令牌的项目/微服务中。
然后在该项目中转到您的 config->jwt.php 文件
- 设置你的
'algo' => env('JWT_ALGO', 'RS256')
否则它不签名。 - 将您的“keys.private”设置为您的 private.pem 路径
- 将您的 keys.public 设置为您的 public.pem 的路径
然后要创建你的令牌,你使用这个:
$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 设置之外的其他微服务。
如果您使用 laravel 进行了另一个单独的设置(其他 url),需要一个受信任的令牌才能访问,那么请进行与上述相同的设置(私钥在这里并不重要),但您的公钥是。
要验证令牌,请添加此代码。
JWTAuth::parseToken()->authenticate();
显然,您可以通过添加您的声明等来扩展它。这是一个简单的设置。我希望这可以帮助别人。
推荐阅读
- json - 条件路由到针对 JSON 数据进行验证的页面
- jmeter - jmeter负载测试如何分析错误
- m2m - 更新资源中的嵌套属性
- sql - SQL:如何选择每天价格最高的二手物品
- git - 为什么要保持 git 历史记录干净?
- linux - 如何在主机上跟踪容器
- r - Rpy2 - 调用名称中带有点的函数
- react-native - React Native 组件在第一次挂载后没有触发 componentDidMount()
- asp.net-mvc - 在交互式组件中设置的请求 URL 上没有收到来自 slack 的响应
- javascript - fa fa-search 在 mac 和 iPhone 中无响应