我有一个Laravel REST API,它使用tymondesigns / jwt-auth进行身份验证,并希望将应用程序从单一服务器扩展到多服务器配置,并使用前端的负载平衡器.
该流程使用RefreshToken中间件,并且基本上每个请求后都会使令牌无效,并且与响应一起返回一个新的令牌. (https://github.com/tymondesigns/jwt-auth/wiki/Authentication)
在多服务器配置中,jwt将如何管理无效令牌,其中令牌使用一个服务器无效,并且使用无效令牌的新请求在另一台服务器上命中?
正确的方法是将
jti claim与exp和iat索赔一起包括在内.
原文链接:https://www.f2er.com/php/132202.html另一种方法是(如果可以)在您的令牌中包含服务器ID(或唯一键).您可以实现一个服务器到服务器的jwt协议,但我认为这将是昂贵的.
另一种方法是让您同步服务器之间的令牌.我会使用一个memcached守护进程(也许在你的前端服务器上),它会保留一个新的无效的令牌列表.如果令牌仅对一个请求有效,则memcached会在使用时立即收到无效的令牌(可能在RefreshToken中间件中).基于令牌时间戳记,您可以确定令牌是否无效(无需进入memcached服务器),或者如果它是新的,您将检入已消耗令牌的memcached列表. memcached也将有一个到期时间.这种方法有很多优点(例如,可以使用标签).如果您将此列表视为日志文件,您仍然可以说您没有使无状态原则无效:)
希望有帮助.