OAUTH_CALLBACK_ERROR error when signing in via custom OIDC SSO (Oracle IAM) on Langfuse 4.21.0

该报错出现在 Langfuse 4.21.0 自托管环境使用自定义 OIDC SSO(Oracle IAM)登录时,主要原因是旧配置中 AUTH_CUSTOM_ID_TOKEN=false 和 AUTH_CUSTOM_CHECKS=state 仍被保留,导致 OIDC 回调流程被 NextAuth/

快速结论:该报错出现在 Langfuse 4.21.0 自托管环境使用自定义 OIDC SSO(Oracle IAM)登录时,主要原因是旧配置中 AUTH_CUSTOM_ID_TOKEN=falseAUTH_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=falseAUTH_CUSTOM_CHECKS=state,新增 AUTH_CUSTOM_FETCH_USERINFO=true,然后重启 Pod。这是维护者确认的修复方案,对应 PR #16607 已合入 v4.21.0。

注意事项:若 IdP 的 /userinfo 端点返回的 claim 名称非标准(如不是 email/name),需额外配置 LANGFUSE_CUSTOM_SSO_EMAIL_CLAIMLANGFUSE_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=falseAUTH_CUSTOM_CHECKS=state
  • 确认 AUTH_CUSTOM_FETCH_USERINFO=true 已正确设置。
  • 从 Pod 内部验证 /userinfo 端点可达,且返回 claim 名称符合 Langfuse 预期(如 emailname)。
  • 如 IdP 使用非标准 claim 名称,检查 LANGFUSE_CUSTOM_SSO_EMAIL_CLAIMLANGFUSE_CUSTOM_SSO_NAME_CLAIM 是否已配置。

解决步骤

  1. 移除环境变量 AUTH_CUSTOM_ID_TOKEN=falseAUTH_CUSTOM_CHECKS=state
  2. 新增环境变量 AUTH_CUSTOM_FETCH_USERINFO=true
  3. 保留原有 AUTH_CUSTOM_ISSUERAUTH_CUSTOM_CLIENT_IDAUTH_CUSTOM_CLIENT_SECRETAUTH_CUSTOM_NAMENEXTAUTH_URLNEXTAUTH_SECRETAUTH_DISABLE_SIGNUP 等配置。
  4. 重启 Pod 使环境变量生效。
  5. 若仍报 “No email found in user object”,检查 /userinfo 端点是否可访问,以及 claim 名称是否匹配;必要时配置 LANGFUSE_CUSTOM_SSO_EMAIL_CLAIMLANGFUSE_CUSTOM_SSO_NAME_CLAIM 指定自定义 claim 名。

验证方法

重启后再次通过 SSO 登录,确认能成功跳转并进入 Langfuse 主界面,不再出现 OAUTH_CALLBACK_ERROR 或 “No email found in user object” 错误。若仍有问题,可临时开启 AUTH_DEBUG=true 查看详细日志,但确认可用后建议移除调试变量。

参考来源

langfuse/langfuse #16627

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 20578

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注