具有相同令牌的多个 Laravel-API 的 JWT 身份验证

Posted

技术标签:

【中文标题】具有相同令牌的多个 Laravel-API 的 JWT 身份验证【英文标题】:JWT-Authentication of mulitple Laravel-APIs with the same token 【发布时间】:2022-01-03 21:37:18 【问题描述】:

我有一个使用 tymon/jwt-auth 保护的 laravel / angular 应用程序。

现在我需要一个单独的 Laravel(或 Lumen)API。我希望这个 API 接受与第一个相同的令牌。我认为如果我设置相同的秘密并挂载中间件,这将起作用。

它没有。使用新生成的令牌,我可以查询第一个 API,但不能查询新的。这是为什么?除了用于验证令牌的秘密之外,还有其他东西吗?

什么是完成这项工作的好方法?我不介意进行全新的身份验证。

编辑:所以似乎需要连接到数据库来验证令牌。也许它会检查令牌中指定的用户是否确实存在于数据库中?

Edit2:Tore Nestenius 评论了 Aud-Claims。我想去 config/jwt.php 文件检查一下。但是我忘了创建一个。现在可以了。

【问题讨论】:

您能发布您的 API 配置和示例令牌吗?也许令牌中的 aud 声明不匹配? 感谢您的帮助。正如您在我的编辑中所读到的,它帮助我解决了这个问题。如果您创建答案,我会批准它。 这不是验证令牌的方法。首先检查 JWT 是否格式正确,然后检查签名,最后检查标准声明。 令牌的实际验证由包处理。该软件包的配置丢失。包括 aud-claims 的配置。但在到达 aud-claims 之前,该过程很可能已经失败。 【参考方案1】:

令牌中的 aud 声明必须与两个 API 期望在访问令牌中看到的一致。很高兴我的评论帮助您解决了问题。

【讨论】:

以上是关于具有相同令牌的多个 Laravel-API 的 JWT 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Flask – 具有相同名称的多个会话 cookie

具有多种形式的网页上的 CSRF 令牌?

JWT 刷新令牌必须有啥声明?它可以与访问令牌相同(具有更长的exp)吗?

如何使用 websocket 在具有相同令牌的用户之间发送消息?

将多个CSV文件导入具有相同名称的变量

OpenIdDict 多个授权服务器无法解码相同的访问令牌