Skip to main content

集成 OneDrive 和 SharePoint

info

本教程提供了将 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)租户中注册一个应用程序。

  1. 导航至 Microsoft Entra ID 管理中心
  2. 转到 标识 (Identity) > 应用程序 (Applications) > 应用注册 (App registrations)
  3. 选择 + 新注册 (+ New registration)
  4. 为您的应用程序起一个描述性的名称,例如 "Open WebUI Business Integration"。
  5. 在“受支持的账户类型”下,选择 “仅限本组织目录中的账户(仅单租户)”“任何组织目录中的账户(任何 Microsoft Entra ID 租户 - 多租户)”
  6. 暂时将“重定向 URI”部分留空。点击 注册 (Register)

第二步:配置 SPA 重定向 URI

Open WebUI 是一个单页应用程序 (SPA),并使用 Microsoft 身份验证库 (MSAL)。正确配置重定向 URI 至关重要。

  1. 在新应用注册的概述页面中,转到 身份验证 (Authentication) 选项卡。
  2. 点击 + 添加平台 (+ Add a platform) 并选择 单页应用程序 (SPA)
  3. 在“重定向 URI”下,输入 Open WebUI 实例的基础 URL(例如 https://open-webui.yourdomain.com)。
  4. 在“隐式授权和混合流”部分下,勾选“访问令牌 (Access tokens)”和“ID 令牌 (ID tokens)”
  5. 点击 配置 (Configure)

第三步:配置 API 权限

接下来,授予应用程序代表用户从 OneDrive 和 SharePoint 读取文件的权限。

  1. 在应用注册菜单中,转到 API 权限 (API permissions) 选项卡。
  2. 点击 + 添加权限 (+ Add a permission) 并选择 Microsoft Graph
  3. 选择 委托权限 (Delegated permissions)
  4. 在搜索框中,找到并添加以下权限:
    • Files.Read:允许应用读取登录用户有权访问的文件。
    • Files.Read.All:允许应用读取登录用户可以访问的所有文件。
    • Sites.Read.All:允许应用读取登录用户可以访问的所有网站集中的项目。
    • User.Read:允许应用读取登录用户的个人资料。
    • AllSites.Read:用于读取网站数据的旧版 SharePoint 权限。
    • MyFiles.Read:允许应用读取用户的个人驱动器。
    • Sites.Search.All:支持跨网站的文件搜索功能。
  5. 如果您的组织单独使用 SharePoint API 权限,请重复此过程,选择 SharePoint 而不是 Microsoft Graph,并添加适用的委托权限。
  6. 添加所有权限后,必须授予管理员同意。点击 “代表 [您的租户名称] 授予管理员同意” 按钮。这些权限的状态应变为“已授予”。
warning

管理员同意是强制性的

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"
info

设置这些变量并重启 Open WebUI 后,您还必须在管理员面板中启用 OneDrive 开关。详情请参见下面的“最后一步”部分。


个人版 OneDrive 集成(可选)

要启用对 Microsoft 个人账户的支持,您必须创建 第二个独立的应用注册,并针对消费者进行配置。

第一步:为个人账户创建单独的应用注册

  1. 导航回 Microsoft Entra ID 中的 应用注册 (App registrations),然后选择 + 新注册 (+ New registration)
  2. 给它一个独特的名称,如 "Open WebUI Personal Integration"。
  3. 在“受支持的账户类型”下,选择选项:“任何组织目录中的账户(任何 Microsoft Entra ID 租户 - 多租户)和个人 Microsoft 账户(如 Skype、Xbox)”
  4. 配置 SPA 重定向 URI 为您的 Open WebUI 基础 URL,就像您为商业版应用所做的那样。
  5. 在“隐式授权和混合流”部分下,勾选“访问令牌 (Access tokens)”和“ID 令牌 (ID tokens)”
  6. 对于此个人注册,不需要特殊的 API 权限或管理员同意,因为用户将单独同意 OneDrive.ReadWrite 权限。

第二步:获取个人版集成的客户端 ID

在此新的“个人”应用注册的 概述 (Overview) 页面中,复制 应用程序(客户端) ID。这将用于不同的环境变量。

第三步:配置个人版集成的环境变量

将以下环境变量添加到您的 Open WebUI 部署中:


# --- 个人账户配置(可选) ---

# 来自第二个个人版应用注册的 应用程序(客户端) ID
ONEDRIVE_CLIENT_ID_PERSONAL="zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz"

最后一步:在管理员设置中启用 OneDrive 集成

在设置环境变量并重启 Open WebUI 实例后,您必须在管理员面板中明确启用该功能。仅设置环境变量不会激活集成。

  1. 导航至 设置 (Settings) → 管理员面板 (Admin Panel) → 文档 (Documents)
  2. 打开 “OneDrive” 开关。
  3. 刷新浏览器或退出并重新登录。
warning

管理员开关是必需的

即使您在环境中设置了 ENABLE_ONEDRIVE_INTEGRATION=true,此步骤也是强制性的。Open WebUI 中的某些配置选项是持久的数据库设置,这些设置在首次启动时初始化,但必须通过管理界面激活。

验证集成

启用管理员开关并刷新后,验证集成是否正常工作:

  1. 在 Open WebUI 中,打开聊天输入框中的附件菜单 (+)。根据您的配置,您应该会看到 “Microsoft OneDrive (工作/学校)” 和/或 “Microsoft OneDrive (个人)” 的菜单项。
  2. 点击其中任何一个选项都应触发 Microsoft 身份验证的弹出窗口。
caution

禁用弹出窗口拦截器!

OneDrive 文件选择器和身份验证流发生在弹出窗口中。如果您点击 OneDrive 选项后没有任何反应,那么您的浏览器几乎肯定拦截了弹出窗口。您必须为您的 Open WebUI 域名禁用弹出窗口拦截器,集成才能正常工作。请注意,与其他浏览器(如 Edge)相比,某些浏览器(如 Chrome)可能有更多的限制。

故障排除

附件菜单中未出现 OneDrive 选项:

  • 验证是否在 设置 → 管理员面板 → 文档 中启用了管理员开关
  • 启用开关后刷新浏览器
  • 检查环境变量是否正确设置,并且容器已重启

文件无法加载或文件夹无法点击:

  • 完全退出 Open WebUI 并重新登录以刷新您的身份验证令牌
  • 验证 Azure 应用注册权限是否配置正确,并已授予管理员同意
  • 检查浏览器控制台是否有任何身份验证错误

身份验证弹出窗口未出现:

  • 为您的 Open WebUI 域名禁用弹出窗口拦截器
  • 尝试不同的浏览器(Edge 在处理 Microsoft 身份验证流方面通常比 Chrome 更可靠)

您现在已成功配置了 OneDrive 集成,为您的用户提供了无缝的文件访问体验。