NextAuth 4.21.1集成Keycloak遇JWT_SESSION_ERROR报错求助
问题原因及解决方法
这个错误是NextAuth生成JWT会话时,时间格式不符合依赖库jose的要求导致的。结合你的配置和错误栈,可从以下方向排查修复:
显式同步会话与JWT的过期时间
你当前仅配置了session.maxAge,但未显式指定JWT的过期时间,可能导致两者逻辑不匹配。修改配置,让JWT有效期与会话保持一致:export default NextAuth({ providers: [ KeycloakProvider({ clientId: process.env.KEYCLOAK_ID, clientSecret: process.env.KEYCLOAK_SECRET, issuer: process.env.KEYCLOAK_ISSUER, }), ], session: { strategy: "jwt", // 显式指定会话策略,避免隐式逻辑冲突 maxAge: 600, }, jwt: { maxAge: 600, // 与session.maxAge保持一致 }, callbacks: {}, debug: true, });检查Node.js版本兼容性
NextAuth 4.21.1要求Node.js版本≥14.6.0,若你的版本过低,会导致jose库的时间解析逻辑异常。运行node -v查看版本,低于要求则升级到14.6.0及以上。重新生成标准的
NEXTAUTH_SECRET
若当前密钥生成不规范,也可能引发JWT异常。用以下命令重新生成标准密钥:openssl rand -hex 32将生成的字符串替换
.env中的NEXTAUTH_SECRET。临时测试默认有效期
若上述方法无效,可暂时注释session.maxAge配置,使用NextAuth默认的30天会话有效期,验证是否是自定义有效期的格式问题。
内容的提问来源于stack exchange,提问作者user3357926
相关产品推荐
相关产品推荐

