在 Java 中使用 next-auth 生成的 jwt token 时,可能会遇到「jwt 字符串必须包含恰好 2 个点字符」的异常。这是因为 next-auth 生成的 token 经过特殊加密,仅适用于当前应用程序。
解决方案
next-auth 维护者建议,如果需要与第三方共享 token,可以在登录后在会话中设置自定义访问令牌,如下所示:
立即学习“Java免费学习笔记(深入)”;
在 java 中解密和获取 next-auth 生成的 token 信息时,请使用以下步骤:
- 配置 jwt 解析器,设置签名密钥和算法:
claims claims = jwts.parserbuilder() .setsigningkey("123456") // 设置签名密钥 .setallowedclockskewseconds(60) // 允许的时间偏差(可选) .build() .parseclaimsjws(jwt) // 解析 token .getbody(); // 获取 claims 对象
- 从 claims 对象中获取信息:
String subject = claims.getSubject();
- 访问令牌将存储在 session.accesstoken 中,您可以使用它进行第三方集成。
请注意,解密 next-auth 生成的 token 仅用于提取应用程序内使用的信息,而不是共享或集成到第三方服务中。