首页 文章

laravel中的Jwt-Auth可以处理多服务器配置中的无效令牌吗?

提问于
浏览
11

我有一个laravel REST API,它使用tymondesigns / jwt-auth进行身份验证,并希望将应用程序从单个服务器扩展到多服务器配置,并在前面配备负载均衡器 .

该流使用RefreshToken中间件,并且在每个请求之后基本上令牌无效,并且与响应一起返回新的令牌 . (https://github.com/tymondesigns/jwt-auth/wiki/Authentication

如何在多服务器配置中管理无效令牌,其中令牌使用一个服务器无效,而使用无效令牌的新请求在另一个服务器上命中?

1 回答

  • 2

    正确的方法是将jti claimexpiat 索赔一起包括在内 .

    另一种方法是(如果可以)在您的令牌中包含服务器ID(或唯一键) . 您可以实现服务器到服务器jwt协议,但我认为这将是昂贵的 .

    另一种方法是您必须在服务器之间同步令牌 . 我会使用一个memcached守护进程(可能在你的前端服务器上)来维护一个新的无效标记列表 . 如果令牌仅对一个请求有效,则memcached将在使用后立即收到无效的令牌(可能在RefreshToken中间件中) . 根据令牌时间戳,您可以决定令牌是否无效(无需转到memcached服务器),或者,如果它是新的,您将检查已消耗令牌的memcached列表 . memcached也将有一个到期时间 . 这种方法有很多优点(例如,你可以使用标签) . 如果您将此列表视为日志文件,您仍然可以说您没有使无状态原则无效:)

    希望有所帮助 .

相关问题