快速结论:这个报错通常出现在 Langfuse 自托管环境配合自定义 OIDC(如 Microsoft ADFS)登录时,ADFS 令牌响应里携带的 resource 等字段未被过滤就传给了 Prisma 的 prisma.account.create(),导致校验失败。优先排查并配置环境变量 AUTH_IGNORE_ACCOUNT_FIELDS=resource。
适用环境:Langfuse 3.199.0(Docker 镜像 langfuse/langfuse:3.199.0),自托管部署,自定义 OIDC 提供商为 Microsoft ADFS,认证配置使用了 AUTH_CUSTOM_CLIENT_ID、AUTH_CUSTOM_CLIENT_SECRET、AUTH_CUSTOM_ISSUER、AUTH_CUSTOM_NAME、AUTH_CUSTOM_ID_TOKEN=true、AUTH_CUSTOM_CLIENT_AUTH_METHOD=client_secret_basic。数据库迁移已是最新状态。
最快修复方案:在部署环境中添加环境变量 AUTH_IGNORE_ACCOUNT_FIELDS=resource,重启服务后再尝试登录。若后续还有其他非 Prisma Account 模型字段,可继续用逗号分隔追加(例如 AUTH_IGNORE_ACCOUNT_FIELDS=resource,some_other_field)。该方案已在 Issue 讨论中被官方助手确认有效。
注意事项:该方案依赖 Langfuse 内置的 AUTH_IGNORE_ACCOUNT_FIELDS 过滤机制,仅适用于自定义 OIDC 提供商返回了 Prisma Account 模型之外的字段这一场景。Issue 中尚未验证其他 ADFS 特有字段(如 refresh_token_expires_in)是否必然需要一并过滤,若后续仍报错,可尝试按同样方式追加到该环境变量。目前没有证据表明该问题与数据库 schema 或迁移有关。
问题场景
用户部署 Langfuse 3.199.0(自托管),通过 Microsoft ADFS 作为自定义 OIDC 提供商配置了 SSO 登录。整个认证流程在 ADFS 侧成功完成,但 Langfuse 接收 OAuth 回调并尝试创建 Account 记录时触发 Prisma 校验错误,导致用户无法登录。
报错原文
[next-auth][error][OAUTH_CALLBACK_HANDLER_ERROR]
Invalid `prisma.account.create()` invocation:
data: {
provider: "custom",
type: "oauth",
providerAccountId: "...",
access_token: "...",
token_type: "bearer",
expires_at: 1785834995,
resource: "...",
refresh_token: "...",
refresh_token_expires_in: 22775,
scope: "profile email openid",
id_token: "...",
userId: "..."
}
Unknown argument `resource`.
原因分析
ADFS 的令牌响应中包含了 Microsoft 特有字段(如 resource、refresh_token_expires_in)。Langfuse 在持久化 OAuth Account 记录时,没有过滤这些提供商特有的字段,而是直接传递给 prisma.account.create()。由于 Prisma Account 模型中不存在 resource 列,Prisma 在校验参数时抛出 PrismaClientValidationError,导致登录失败。核心原因在于 OAuth 账户持久化层未对 provider 返回的 token response 字段做过滤。
环境排查
- 确认 Langfuse 版本为 3.199.0(Docker 镜像
langfuse/langfuse:3.199.0)。 - 确认数据库迁移已执行且
Account表结构与当前 schema 一致。 - 确认自定义 OIDC 提供商为 Microsoft ADFS,并核对上述
AUTH_CUSTOM_*环境变量已正确配置。 - 检查 ADFS 令牌响应中是否包含
resource、refresh_token_expires_in等额外字段。
解决步骤
- 登录 Langfuse 自托管服务器,找到部署所用的环境变量配置文件(如
docker-compose.yml、.env或 Kubernetes Secret)。 - 添加以下环境变量:
AUTH_IGNORE_ACCOUNT_FIELDS=resource - 如果 ADFS 令牌中还有其他不在 Prisma
Account模型中的字段(例如refresh_token_expires_in),可用逗号分隔一并加入:
AUTH_IGNORE_ACCOUNT_FIELDS=resource,refresh_token_expires_in - 保存配置并重启 Langfuse 服务。
- 再次通过自定义 SSO 提供商尝试登录。
验证方法
重启服务后,使用 ADFS 自定义 OIDC 流程重新登录。若登录成功,且不再出现 PrismaClientValidationError: Unknown argument 'resource',则表示问题已解决。同时可检查 Langfuse 日志确认 prisma.account.create() 调用不再包含 resource 字段。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[Question]: error when attaching file in chat ----AttributeError("'Request' object has no attribute 'file'")](https://www.chat-gpts.plus/wp-content/uploads/2026/08/11805-40332ec3-768x403.jpg)
![[Question]: No keyword or question was found in dataSet afer files loaded by customized ingestion pipeline](https://www.chat-gpts.plus/wp-content/uploads/2026/08/11474-a36958b1-768x403.jpg)
