[Bug]: OIDC login allows new user registration even when REGISTER_ENABLED=0

当 RAGFlow 配置了 OIDC 认证且设置 REGISTER_ENABLED=0 时,新用户仍能通过 OIDC 自动注册。优先检查 OAuth/OIDC 回调处理程序是否对 REGISTER_ENABLED 进行了判断。

快速结论:当 RAGFlow 配置了 OIDC 认证且设置 REGISTER_ENABLED=0 时,新用户仍能通过 OIDC 自动注册。优先检查 OAuth/OIDC 回调处理程序是否对 REGISTER_ENABLED 进行了判断。

适用环境:RAGFlow v0.25.6(Helm chart 安装,镜像版本 v0.25.6),OIDC 认证已配置。

最快修复方案:修改 api/apps/restful_apis/user_api.py 中 OAuth 回调处理函数(位于 /auth/oauth/<channel>/callback 路由),在调用 user_register() 之前添加 REGISTER_ENABLED 检查。若 REGISTER_ENABLED 为 False,则返回错误响应。

注意事项:此修改需要手动改动源代码并重新构建部署,不属于官方正式补丁。作为临时替代方案,可在身份提供商(IdP)侧限制只有已授权的用户才能访问 RAGFlow 应用。

问题场景

用户在 RAGFlow 中配置 OIDC 认证(按官方文档),并设置环境变量 REGISTER_ENABLED=0,期望禁止新用户自行注册。但在实际运行时,尚未存在于 RAGFlow 数据库的新用户仍能通过 OIDC 成功认证,并自动在系统中创建账户。

报错原文

[Bug]: OIDC login allows new user registration even when REGISTER_ENABLED=0
实际行为:New OIDC users are automatically registered and created in RAGFlow despite REGISTER_ENABLED=0.

原因分析

RAGFlow 的 OAuth/OIDC 回调处理程序(位于 api/apps/restful_apis/user_api.py 中的 /auth/oauth/<channel>/callback 路由)在遇到数据库中不存在的邮箱时,直接调用 user_register() 创建新用户,没有检查 REGISTER_ENABLED 配置。而 REGISTER_ENABLED 此时仅应用于密码注册接口(user_api.py 第 495-500 行附近的注册端点),并未覆盖 OIDC 流程。

环境排查

  • 确认 RAGFlow 版本是否为 v0.25.6(Issue 中的 commit ID 和镜像版本)
  • 确认是否存在自定义修改过 api/apps/restful_apis/user_api.py 文件
  • 确认 OIDC 配置是否按文档完成(客户端 ID、Secret、Issuer 等)
  • 确认 REGISTER_ENABLED 环境变量是否已正确设置为 0

解决步骤

  1. 定位 RAGFlow 源码目录下的 api/apps/restful_apis/user_api.py 文件。
  2. 找到 OAuth 回调处理函数(通常在 /auth/oauth/<channel>/callback 路由对应的视图函数内,大约第 220-258 行)。
  3. 在现有代码中,检查到用户不存在并准备调用 user_register() 之前(约第 232-243 行附近),添加如下判断:
    if not REGISTER_ENABLED:
        return server_error_response(ValueError("Registration is disabled"))
  4. 确保 REGISTER_ENABLED 变量已在模块作用域中正确导入(通常从配置读取)。重新构建 Docker 镜像并部署。
  5. 临时替代方案:在身份提供商(IdP)的管理控制台中,仅将允许登录的 RAGFlow 用户授权给该 OIDC 应用,从源头限制新用户通过 OIDC 注册。

验证方法

设置 REGISTER_ENABLED=0 后,使用一个从未在 RAGFlow 数据库中注册过的邮箱,通过 OIDC 方式尝试登录。如果修复生效,该用户应被拒绝并返回类似 “Registration is disabled” 的错误信息;已有用户应能正常登录。

参考来源

infiniflow/ragflow #16103

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 15506

发表回复

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