【发布时间】:2017-10-07 03:52:33
【问题描述】:
我正在为移动应用程序编写 API,后端网站是用 Laravel 编写的。我正在使用 Tymon\JWTAuth 进行这样的身份验证:
function auth()
{
try {
if(!$user = JWTAuth::parseToken()->authenticate())
{
return ('login or register');
}
}
catch (JWTException $e )
{
return ('token is invalid');
}
return $this->user = $user ;
}
今天我注意到了一些事情,当我在我的 localhost API 上为 id 为 4 的用户生成 JWT 令牌时,如果我将相同的令牌发送到实时 API 而不是收到错误消息,我会得到具有 id 的用户4!基本上,我可以通过在我的本地主机上的他/她的 id 上生成一些令牌来使用我想要的任何用户登录。我错过了什么吗?
我不知道这是否与此有关,但为了节省测试时间,我不将令牌作为 POST 正文和标头的一部分发送,只是在带有 GET 方法的 URL 中发送,例如:
site.com/api/user?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
【问题讨论】:
-
我会发表评论,但我没有足够的声誉。您的本地和远程位置的密钥是否相同?我不能 100% 确定,但可能是用户 JWT 令牌的所有可能组合都是有效的,除非明确列入黑名单(或它们已过期)。因此,如果您拥有相同的密钥,那么您将获得两个应用程序的有效令牌。我也是 JWT 令牌的新手,所以我想看看是否有人对此有更多了解。 See this link for info on how JWT Tokens are verified
-
@LeviJames 是的,就是这样,如果可以,请将其发布为答案