快速结论:该报错出现在 Langfuse 4.21.0 自托管环境使用自定义 OIDC SSO(Oracle IAM)登录时,主要原因是旧配置中 AUTH_CUSTOM_ID_TOKEN=false 和 AUTH_CUSTOM_CHECKS=state 仍被保留,导致 OIDC 回调流程被 NextAuth/openid-client 拒绝。优先移除这两个变量,并启用 AUTH_CUSTOM_FETCH_USERINFO=true 即可解决。
适用环境:Langfuse 4.21.0(自托管)、Oracle IAM(OIDC IdP)、Docker/Pod 部署。未提及 Python、CUDA、显卡等环境,故不涉及。
最快修复方案:删除 AUTH_CUSTOM_ID_TOKEN=false 和 AUTH_CUSTOM_CHECKS=state,新增 AUTH_CUSTOM_FETCH_USERINFO=true,然后重启 Pod。这是维护者确认的修复方案,对应 PR #16607 已合入 v4.21.0。
注意事项:若 IdP 的 /userinfo 端点返回的 claim 名称非标准(如不是 email/name),需额外配置 LANGFUSE_CUSTOM_SSO_EMAIL_CLAIM 和 LANGFUSE_CUSTOM_SSO_NAME_CLAIM;此外,请确认 /userinfo 端点在 Pod 网络内可访问。
问题场景
用户从 Langfuse 4.16.0 升级到 4.21.0 后,使用 Oracle IAM 作为自定义 OIDC SSO 登录时报错。此前 Issue #16519 已确认 Oracle IAM 无法在 ID Token 中包含 email/name 字段。升级后错误日志有所变化,但登录仍无法成功。
报错原文
OAUTH_CALLBACK_ERROR error when signing in via custom OIDC SSO (Oracle IAM) on Langfuse 4.21.0
No email found in user object
原因分析
可能原因是:旧配置中的 AUTH_CUSTOM_ID_TOKEN=false 并非有效绕过方案——该开关会让 NextAuth 从 client.callback() 切换到 client.oauthCallback(),而 openid-client 只要响应中出现 id_token(当 scope 包含 openid 时必然存在)就会拒绝该回调。同时 AUTH_CUSTOM_CHECKS=state 限制了校验项,也可能干扰回调流程。Langfuse 4.21.0 提供的 AUTH_CUSTOM_FETCH_USERINFO=true 可保留完整 OIDC 回调和 ID Token 校验,改为从 /userinfo 端点获取登录所需的 profile 数据(claim 合并规则为 {...idTokenClaims, ...userinfo},保留 ID Token 中的 sub)。
环境排查
- 确认 Langfuse 版本为 4.21.0(含 PR #16607 修复)。
- 检查环境变量中是否仍存在
AUTH_CUSTOM_ID_TOKEN=false和AUTH_CUSTOM_CHECKS=state。 - 确认
AUTH_CUSTOM_FETCH_USERINFO=true已正确设置。 - 从 Pod 内部验证
/userinfo端点可达,且返回 claim 名称符合 Langfuse 预期(如email、name)。 - 如 IdP 使用非标准 claim 名称,检查
LANGFUSE_CUSTOM_SSO_EMAIL_CLAIM和LANGFUSE_CUSTOM_SSO_NAME_CLAIM是否已配置。
解决步骤
- 移除环境变量
AUTH_CUSTOM_ID_TOKEN=false和AUTH_CUSTOM_CHECKS=state。 - 新增环境变量
AUTH_CUSTOM_FETCH_USERINFO=true。 - 保留原有
AUTH_CUSTOM_ISSUER、AUTH_CUSTOM_CLIENT_ID、AUTH_CUSTOM_CLIENT_SECRET、AUTH_CUSTOM_NAME、NEXTAUTH_URL、NEXTAUTH_SECRET、AUTH_DISABLE_SIGNUP等配置。 - 重启 Pod 使环境变量生效。
- 若仍报 “No email found in user object”,检查
/userinfo端点是否可访问,以及 claim 名称是否匹配;必要时配置LANGFUSE_CUSTOM_SSO_EMAIL_CLAIM和LANGFUSE_CUSTOM_SSO_NAME_CLAIM指定自定义 claim 名。
验证方法
重启后再次通过 SSO 登录,确认能成功跳转并进入 Langfuse 主界面,不再出现 OAUTH_CALLBACK_ERROR 或 “No email found in user object” 错误。若仍有问题,可临时开启 AUTH_DEBUG=true 查看详细日志,但确认可用后建议移除调试变量。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


![[bug]: Corrupted File Causing Software Lock](https://www.chat-gpts.plus/wp-content/uploads/2026/08/9544-a82b364c-768x403.jpg)