集成 OneDrive 和 SharePoint
本教程提供了将 Open WebUI 与 Microsoft OneDrive 商业版和 SharePoint 集成的逐步指南,以及针对 Microsoft 个人 OneDrive 账户的可选集成。您可以启用其中一种或同时启用两者。本文档更新至 Open WebUI v0.6.37。
配置 OneDrive 和 SharePoint 集成
本指南将引导您完成配置 Open WebUI 的整个过程,允许用户直接从其 Microsoft 账户附加文件。此过程涉及在 Microsoft Azure 门户中创建一个或两个应用注册,并在您的 Open WebUI 实例中设置正确的环境变量。
前提条件
要成功完成本教程,您需要:
- 一个具有创建和管理应用注册管理权限的有效 Microsoft Azure 账户。
- 访问 Open WebUI 实例的环境变量(例如,通过
.env文件或 Docker 环境设置)。
OneDrive 商业版和 SharePoint 集成(工作/学校)
这是针对组织使用的主要集成。请按照以下步骤允许用户访问其工作或学校账户中的文件。
第一步:创建 Azure 应用注册
首先,您需要在组织的 Microsoft Entra ID(原 Azure AD)租户中注册一个应用程序。
- 导航至 Microsoft Entra ID 管理中心。
- 转到 标识 (Identity) > 应用程序 (Applications) > 应用注册 (App registrations)。
- 选择 + 新注册 (+ New registration)。
- 为您的应用程序起一个描述性的名称,例如 "Open WebUI Business Integration"。
- 在“受支持的账户类型”下,选择 “仅限本组织目录中的账户(仅单租户)” 或 “任何组织目录中的账户(任何 Microsoft Entra ID 租户 - 多租户)”。
- 暂时将“重定向 URI”部分留空。点击 注册 (Register)。
第二步:配置 SPA 重定向 URI
Open WebUI 是一个单页应用程序 (SPA),并使用 Microsoft 身份验证库 (MSAL)。正确配置重定向 URI 至关重要。
- 在新应用注册的概述页面中,转到 身份验证 (Authentication) 选项卡。
- 点击 + 添加平台 (+ Add a platform) 并选择 单页应用程序 (SPA)。
- 在“重定向 URI”下,输入 Open WebUI 实例的基础 URL(例如
https://open-webui.yourdomain.com)。 - 在“隐式授权和混合流”部分下,勾选“访问令牌 (Access tokens)”和“ID 令牌 (ID tokens)”。
- 点击 配置 (Configure)。
第三步:配置 API 权限
接下来,授予应用程序代表用户从 OneDrive 和 SharePoint 读取文件的权限。
- 在应用注册菜单中,转到 API 权限 (API permissions) 选项卡。
- 点击 + 添加权限 (+ Add a permission) 并选择 Microsoft Graph。
- 选择 委托权限 (Delegated permissions)。
- 在搜索框中,找到并添加以下权限:
Files.Read:允许应用读取登录用户有权访问的文件。Files.Read.All:允许应用读取登录用户可以访问的所有文件。Sites.Read.All:允许应用读取登录用户可以访问的所有网站集中的项目。User.Read:允许应用读取登录用户的个人资料。AllSites.Read:用于读取网站数据的旧版 SharePoint 权限。MyFiles.Read:允许应用读取用户的个人驱动器。Sites.Search.All:支持跨网站的文件搜索功能。
- 如果您的组织单独使用 SharePoint API 权限,请重复此过程,选择 SharePoint 而不是 Microsoft Graph,并添加适用的委托权限。
- 添加所有权限后,必须授予管理员同意。点击 “代表 [您的租户名称] 授予管理员同意” 按钮。这些权限的状态应变为“已授予”。
管理员同意是 强制性的
Open WebUI 使用 .default 作用域以实现无缝的企业体验,这意味着它依赖于预先批准的权限。如果此处未授予管理员同意,非管理员用户在登录时将被阻止,并显示“需要管理员批准”错误。
第四步:获取商业版集成的凭据
在刚刚创建的应用注册的 概述 (Overview) 页面中,复制以下值:
- 应用程序(客户端) ID:这将是您的
ONEDRIVE_CLIENT_ID_BUSINESS。 - 目录(租户) ID:这将是您的
ONEDRIVE_SHAREPOINT_TENANT_ID。
第五步:配置商业版集成的环境变量
在 Open WebUI 部署中设置以下环境变量以启用工作/学校集成:
# 全局启用 OneDrive 集成功能
ENABLE_ONEDRIVE_INTEGRATION=true
# --- 商业版和 SharePoint 配置 ---
# 来自商业版应用注册的 应用程序(客户端) ID
ONEDRIVE_CLIENT_ID_BUSINESS="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
# 来自商业版应用注册的 目录(租户) ID
ONEDRIVE_SHAREPOINT_TENANT_ID="yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
# SharePoint 实例的根 URL
ONEDRIVE_SHAREPOINT_URL="https://your-tenant-name.sharepoint.com"
设置这些变量并重启 Open WebUI 后,您还必须在管理员面板中启用 OneDrive 开关。详情请参见下面的“最后一步”部分。
个人版 OneDrive 集成(可选)
要启用对 Microsoft 个人账户的支持,您必须创建 第二个独立的应用注册,并针对消费者进行配置。
第一步:为个人账户创建单独的应用注册
- 导航回 Microsoft Entra ID 中的 应用注册 (App registrations),然后选择 + 新注册 (+ New registration)。
- 给它一个独特的名称,如 "Open WebUI Personal Integration"。
- 在“受支持的账户类型”下,选择选项:“任何组织目录中的账户(任何 Microsoft Entra ID 租户 - 多租户)和个人 Microsoft 账户(如 Skype、Xbox)”。
- 配置 SPA 重定向 URI 为您的 Open WebUI 基础 URL,就像您为商业版应用所做的那样。
- 在“隐式授权和混合流”部分下,勾选“访问令牌 (Access tokens)”和“ID 令牌 (ID tokens)”。
- 对于此个人注册,不需要特殊的 API 权限或管理员同意,因为用户将单独同意
OneDrive.ReadWrite权限。
第二步:获取个人版集成的客户端 ID
在此新的“个人”应用注册的 概述 (Overview) 页面中,复制 应用程序(客户端) ID。这将用于不同的环境变量。
第三步:配置个人版集成的环境变量
将以下环境变量添加到您的 Open WebUI 部署中:
# --- 个人账户配置(可选) ---
# 来自第二个个人版应用注册的 应用程序(客户端) ID
ONEDRIVE_CLIENT_ID_PERSONAL="zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz"
最后一步:在管理员设置中启用 OneDrive 集成
在设置环境变量并重启 Open WebUI 实例后,您必须在管理员面板中明确启用该功能。仅设置环境变量不会激活集成。
- 导航至 设置 (Settings) → 管理员面板 (Admin Panel) → 文档 (Documents)。
- 打开 “OneDrive” 开关。
- 刷新浏览器或退出并重新登录。
管理员开关是必需的
即使您在环境中设置了 ENABLE_ONEDRIVE_INTEGRATION=true,此步骤也是强制性的。Open WebUI 中的某些配置选项是持久的数据库设置,这些设置在首次启动时初始化,但必须通过管理界面激活。
验证集成
启用管理员开关并刷新后,验证集成是否正常工作:
- 在 Open WebUI 中,打开聊天输入框中的附件菜单 (+)。根据您的配置,您应该会看到 “Microsoft OneDrive (工作/学校)” 和/或 “Microsoft OneDrive (个人)” 的菜单项。
- 点击其中任何一个选项都应触发 Microsoft 身份验证的弹出窗口。
禁用弹出窗口拦截器!
OneDrive 文件选择器和身份验证流发生在弹出窗口中。如果您点击 OneDrive 选项后没有任何反应,那么您的浏览器几乎肯定拦截了弹出窗口。您必须为您的 Open WebUI 域名禁用弹出窗口拦截器,集成才能正常工作。请注意,与其他浏览器(如 Edge)相比,某些浏览器(如 Chrome)可能有更多的限制。
故障排除
附件菜单中未出现 OneDrive 选项:
- 验证是否在 设置 → 管理员面板 → 文档 中启用了管理员开关
- 启用开关后刷新浏览器
- 检查环境变量是否正确设置,并且容器已重启
文件无法加载或文件夹无法点击:
- 完全退出 Open WebUI 并重新登录以刷新您的身份验证令牌
- 验证 Azure 应用注册权限是否配置正确,并已授予管理员同意
- 检查浏览器控制台是否有任何身份验证错误
身份验证弹出窗口未出现:
- 为您的 Open WebUI 域名禁用弹出窗口拦截器
- 尝试不同的浏览器(Edge 在处理 Microsoft 身份验证流方面通常比 Chrome 更可靠)
您现在已成功配置了 OneDrive 集成,为您的用户提供了无缝的文件访问体验。