快速结论:这个报错通常出现在 Open WebUI 通过 OpenAI 兼容连接向自建 API 转发 OAuth 凭据时,后端拿到的是登录时写入、之后不再刷新的旧 oauth_id_token cookie,因此 token 过期后仍被继续发送。优先排查是否启用了 Forward cookies,以及是否还依赖 oauth_id_token cookie 做鉴权。
适用环境:Open WebUI v0.11.3,Docker 安装,macOS。Issue 未提供 Ollama、Python、CUDA、显卡或浏览器版本信息。
最快修复方案:设置 ENABLE_OAUTH_ID_TOKEN_COOKIE=false,并让 API 服务端改为从 Authorization 请求头读取 token 完成鉴权。
注意事项:Issue 中维护者确认 System OAuth 认证类型发送的 access token 自 v0.11.0 起会在过期前自动刷新,因此 Authorization 头中的 token 不是问题来源;如果 API 服务端必须依赖 id_token 的 claims,目前没有哪种连接认证类型能满足这一需求。相关旧 Issue 也指出刷新逻辑只考虑 access_token 过期时间、忽略 id_token JWT 过期时间,这属于另一条相关线索,需结合自身部署确认。
问题场景
用户在 Open WebUI v0.11.3(Docker 部署于 macOS)中配置了一个启用了 OAuth 的 OpenAI 兼容连接。运行一段时间后,Open WebUI 会把过期的 OAuth token 发给该 OpenAI 兼容 API 服务端,导致服务端收到的凭据失效。用户通过抓取 OpenAI 兼容 API 服务端上的 cookie,检查 oauth_id_token 的有效性,复现了“事后发送无效 token”的现象。
报错原文
issue: Expired oauth token being sent to OpenAI compatible API
When forwarding system user OAuth access token to authenticate as the Auth method for a OpenAI compatible connection, Open Webui will send an expired oauth token after sometime.
Expected Behavior: Every oauth token being sent to the API should be valid.
Actual Behavior: An expired token is being sent.
原因分析
维护者在评论中确认:真正的问题不是 Authorization 头里的 token。使用 System OAuth 认证类型时,连接发送的是 access token,并且自 v0.11.0 起(v0.11.3 已包含该逻辑)会在过期前自动刷新。
用户实际观测到的是遗留的 oauth_id_token cookie。这个 cookie 只在登录时写入一次,之后不会刷新,因此当 IdP 签发的 id_token 过期后它就会变成过期值。这是该 cookie 的既定行为,官方建议是禁用它。它之所以会到达 API 服务端,是因为该连接启用了 Forward cookies。
环境排查
- 确认 Open WebUI 版本,Issue 中为 v0.11.3;v0.11.0 起 System OAuth 的 access token 刷新逻辑已存在。
- 确认安装方式,Issue 中为 Docker。
- 确认操作系统,Issue 中为 macOS。
- 确认 OpenAI 兼容连接是否启用了 Forward cookies。
- 确认是否设置或依赖
oauth_id_tokencookie 做鉴权。 - 确认 API 服务端从哪个位置读取凭据:Authorization 请求头,还是 cookie。
- Issue 未提供 Ollama、Python、CUDA、PyTorch 或显卡信息,这些项无需作为本次排查前提。
解决步骤
- 在 Open WebUI 部署中关闭
oauth_id_tokencookie,即设置ENABLE_OAUTH_ID_TOKEN_COOKIE=false。这是维护者给出的推荐做法。 - 修改 OpenAI 兼容 API 服务端的鉴权逻辑,改为从 Authorization 请求头读取 token 并校验,而不再依赖 cookie 中的 id_token。
- 如果连接上启用了 Forward cookies,且当前并不需要把 cookie 转发给该 API,可一并检查该开关是否会继续把旧的
oauth_id_token带到服务端。 - 重新登录或重启后重新发起请求,让服务端只能从 Authorization 头获取凭据,避免继续读取旧 cookie。
验证方法
改动后重新向该 OpenAI 兼容连接发起请求,在 API 服务端确认收到的凭据来自 Authorization 请求头,并且该 token 在过期后会由 Open WebUI 自动刷新。若之前抓取 cookie 中 oauth_id_token 的位置不再出现过期 token,或服务端不再因读取该 cookie 而鉴权失败,说明问题已按维护者建议的方式规避。
参考来源
相关旧 Issue(由 Issue 自动关联):
- open-webui/open-webui #23074:v0.8.11 OpenAI Responses API OAuth Token 发送到后端后未刷新。
- open-webui/open-webui #27066:OAuth token 刷新忽略 id_token JWT 过期时间,导致下游收到过期 id_token。
- open-webui/open-webui #25660:Entra ID SSO 下 OpenAI 连接未转发 Authorization 头。
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


