OAuthCallback error when signing in via custom OIDC SSO (Oracle IAM) on Langfuse 4.16.0

该报错通常出现在 Langfuse 通过自定义 OIDC SSO(如 Oracle IAM)登录时,回调阶段因用户信息缺失(如 email 字段)、token 响应包含多余字段或 PKCE 不兼容导致认证失败。优先检查 userinfo 返回的 email 字段是否存在于顶层,并查看 Pod 日志中

快速结论:该报错通常出现在 Langfuse 通过自定义 OIDC SSO(如 Oracle IAM)登录时,回调阶段因用户信息缺失(如 email 字段)、token 响应包含多余字段或 PKCE 不兼容导致认证失败。优先检查 userinfo 返回的 email 字段是否存在于顶层,并查看 Pod 日志中是否有 PrismaClientValidationError。

适用环境:Langfuse 4.16.0 自托管版,部署于 AWS EKS,数据库为 PostgreSQL,身份提供方为基于 Oracle IAM 的企业内部 SSO 平台。

最快修复方案:暂无确认的一步修复方案。Issue 讨论中给出了多个可能原因及对应的排查/设置项,需按顺序验证(见解决步骤)。

注意事项:以下解决步骤均为可能原因对应的排查建议,尚未在 Issue 中得到最终验证;请根据实际环境逐项尝试。`AUTH_CUSTOM_ID_TOKEN=false` 在本次场景中确认是正确配置。

问题场景

用户在 Langfuse 4.16.0 自托管版本中配置了自定义 OIDC SSO(基于 Oracle IAM)。点击 SSO 登录按钮后,认证流程重定向回 Langfuse,但登录页面显示 OAuthCallback 错误。应用启动正常,OIDC 元数据、token 和 userinfo 端点均可访问且返回有效响应,但认证始终在回调阶段失败。

报错原文

OAuthCallback
Contact support if this error is unexpected.

[NEXT_AUTH] OAUTH_CALLBACK_ERROR

原因分析

可能原因包括:

  • userinfo 返回缺少 email 等必填字段:Langfuse 的 CustomSSOProvider 从用户资料中提取 sub、email、name,signIn 回调会拒绝没有有效 email 的 profile。如果 Oracle IAM 返回的 email 字段名不是标准的 email(例如 preferred_usernamemail),会导致静默失败。
  • token 响应包含多余字段:有用户在使用 ADFS 时遇到相同报错,原因是 token 响应中包含 resource 字段,而该字段不存在于 Langfuse 的 Prisma Account 模型中。Oracle IAM 可能返回类似的厂商专属字段,导致写入数据库失败。
  • PKCE 兼容性问题:自定义 provider 默认启用 pkce 和 state 校验,如果 Oracle IAM 不支持 PKCE,回调阶段会失败。

环境排查

  • 确认 userinfo 端点返回的 JSON 中是否包含顶层 emailsubname 字段;如字段名不同,需记录实际名称。
  • 检查 Langfuse Pod 日志中是否存在 PrismaClientValidationError 错误,该类错误会直接指出引起问题的字段名。
  • 确认 Oracle IAM 是否支持 PKCE 流程。
  • 验证 AUTH_CUSTOM_ID_TOKEN=false 配置,确认用户身份确实从 userinfo 端点获取(Issue 中确认此配置在本次场景是正确的)。

解决步骤

  1. 检查 userinfo 端点返回的数据,确认 emailsubname 是否存在且为顶层字段。
  2. 如果 email 字段名不同,通过环境变量指定实际字段名:
    LANGFUSE_CUSTOM_SSO_EMAIL_CLAIM=<实际字段名>

    同理可按需设置 LANGFUSE_CUSTOM_SSO_NAME_CLAIMLANGFUSE_CUSTOM_SSO_SUB_CLAIM

  3. 查看 Pod 日志是否出现 PrismaClientValidationError;如果存在,记录报错中提到的多余字段名,然后设置:
    AUTH_IGNORE_ACCOUNT_FIELDS=<字段1>,<字段2>

    过滤掉这些多余字段。

  4. 如果上述步骤均无法解决,可优先尝试关闭 PKCE 校验(仅保留 state 校验):
    AUTH_CUSTOM_CHECKS=state

    此方案属于推测性尝试,尚未在 Issue 中验证。

验证方法

完成上述配置调整后,重新点击 SSO 登录按钮,确认能成功跳转回 Langfuse 并完成登录。同时检查 Langfuse Pod 日志,确认不再出现 OAUTH_CALLBACK_ERRORPrismaClientValidationError 错误。

参考来源

langfuse/langfuse #16519

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 20457

发表回复

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