Dan*_*nny 11 php rest multiserver jwt laravel
我有一个laravel REST API,它使用tymondesigns/jwt-auth进行身份验证,并希望将应用程序从单个服务器扩展到多服务器配置,并在前面配备负载均衡器.
该流使用RefreshToken中间件,并且在每个请求之后基本上令牌无效,并且与响应一起返回新的令牌.(https://github.com/tymondesigns/jwt-auth/wiki/Authentication)
如何在多服务器配置中管理无效令牌,其中令牌使用一个服务器无效,而使用无效令牌的新请求在另一个服务器上命中?
小智 2
正确的方法是将jti 索赔与exp和iat索赔一起包含在内。
另一种方法是(如果可以的话)在令牌中包含服务器 ID(或唯一密钥)。您可以实现服务器到服务器 jwt 协议,但我认为这会很昂贵。
另一种方法是您必须在服务器之间同步令牌。我将使用 memcached 守护进程(可能在您的前端服务器上)来维护新失效令牌的列表。如果令牌仅对一个请求有效,则 memcached 将在使用后立即收到无效令牌(可能就在 RefreshToken 中间件中)。根据令牌时间戳,您可以决定令牌是否无效(无需访问 memcached 服务器),或者,如果它很新,您将检查已消耗令牌的 memcached 列表。memcached 也会有一个过期时间。这种方法有很多优点(例如,您可以使用标签)。如果您将此列表视为日志文件,您仍然可以说您没有使无状态原则失效:)
希望有帮助。
| 归档时间: |
|
| 查看次数: |
865 次 |
| 最近记录: |