Hasura Engine JWT验证异常:JWTIssuedAtFuture问题排查
解决Hasura JWT认证的JWTIssuedAtFuture错误
你的问题根源就是Docker容器与Linux服务器时间不一致。
NodeJS在宿主机生成JWT时使用的是宿主机时间,但Hasura容器内部的时间比宿主机慢了2分钟。此时JWT的iat(签发时间)在容器视角里属于“未来时间”,Hasura会直接拒绝这个令牌。等2分钟后,容器时间追上宿主机的签发时间,令牌就能正常通过验证,API也能返回正确响应了。
解决方法就是让Docker容器和宿主机时间同步:
- 单容器启动时,挂载宿主机的时间相关文件:
docker run -d --name hasura -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro hasura/graphql-engine:latest - 如果用Docker Compose管理,在Hasura服务的配置中添加卷挂载:
services: hasura: image: hasura/graphql-engine:latest volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro # 其他原有配置...
配置完成后,进入容器执行date命令,对比宿主机的date输出,确认两者时间完全一致即可。
内容的提问来源于stack exchange,提问作者eboi
相关产品推荐
相关产品推荐

