Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Azure Entra

了解如何配置 LibreChat 以使用 Azure Entra 进行用户身份验证。

  1. 前往 Azure Portal 并使用您的账户登录。
  2. 在搜索框中输入 "Azure Entra" 并点击它。
  3. 在左侧菜单中,点击 App registrations,然后点击 New registration。
  4. 为您的应用命名,并选择 Web 作为平台类型。
  5. 在 Redirect URI 字段中,输入您的 LibreChat OpenID 回调 URL 并点击 Register。对于本地 Docker 安装,请使用 http://localhost:3080/oauth/openid/callback。对于已部署的实例,请将 http://localhost:3080 替换为您公共的 DOMAIN_SERVER 值,例如 https://chat.example.com/oauth/openid/callback

image

  1. 您将看到一个包含有关您的应用程序信息的概览页面。请复制应用程序(客户端)ID 和目录(租户)ID 并将其保存到某处。

image

  1. 在左侧菜单中,点击 Authentication,然后在 Implicit grant and hybrid flows 下勾选 Access tokens 和 ID tokens。

image

  1. 在左侧菜单中,点击 Certificates & Secrets,然后点击 New client secret。为您的密钥命名并设置过期日期,然后点击 Add。您将看到一个包含密钥的 Value 列。请将其复制并妥善保存。切勿与他人分享!

image

  1. 如果您想通过组来限制访问,则应将 groups 声明添加到令牌中。为此,请转到 Token configuration 并点击 Add group claim。选择您想要包含在令牌中的组,然后点击 Add。

image

  1. 打开项目文件夹中的 .env 文件,并添加以下变量及其对应的值:
DOMAIN_CLIENT=https://your-domain.com # use http://localhost:3080 if not using a custom domain
DOMAIN_SERVER=https://your-domain.com # use http://localhost:3080 if not using a custom domain

# enable social login or else OpenID button will not appear on login page
ALLOW_SOCIAL_LOGIN=true

OPENID_CLIENT_ID=Your Application (client) ID
OPENID_CLIENT_SECRET=Your client secret
OPENID_ISSUER=https://login.microsoftonline.com/Your Directory (tenant ID)/v2.0/
OPENID_SESSION_SECRET=Any random string
OPENID_SCOPE=openid profile email #DO NOT CHANGE THIS
OPENID_CALLBACK_URL=/oauth/openid/callback # this should be the same for everyone

OPENID_REQUIRED_ROLE_TOKEN_KIND=id

# If you want to restrict access by groups
OPENID_REQUIRED_ROLE_PARAMETER_PATH="roles"
OPENID_REQUIRED_ROLE="Your Group Name" # Single role or comma-separated roles (e.g., Group1,Group2,Admin)

# Optional: redirects the user to the end session endpoint after logging out
OPENID_USE_END_SESSION_ENDPOINT=true

# Maximum logout URL length before using logout_hint instead of id_token_hint (default: 2000)
# OPENID_MAX_LOGOUT_URL_LENGTH=2000

在 Azure 中注册的重定向 URI 必须与 LibreChat 提供的 URL 完全一致。如果 DOMAIN_SERVER=https://chat.example.com,则 Azure 应使用 https://chat.example.com/oauth/openid/callback

  1. 保存 .env 文件

注意:如果使用 Docker,请运行 docker compose up -d 以应用 .env 配置更改。

进阶:Token 重用

LibreChat 支持重用 Azure Entra ID 令牌进行会话管理,这可以提供与您的 Azure 环境更好的集成。此功能允许 LibreChat 使用 Azure 的刷新令牌,而不是管理其自己的会话令牌。

要了解有关此功能的更多信息以及如何配置它,请参阅 Re-use OpenID Tokens for Login Session

进阶:Microsoft Graph API 集成

当使用 Azure Entra ID 作为您的 OpenID 提供商时,您可以启用 Microsoft Graph API 集成,以通过人员和群组搜索功能增强权限和共享系统。

先决条件

  1. 您的 Azure 应用注册必须具备相应的 Microsoft Graph API 权限
  2. 某些 Graph API 范围(例如 GroupMember.Read.All)可能需要管理员同意。

添加 Graph API 权限

  1. 在您的 Azure 应用注册中,转到 API permissions
  2. 点击 Add a permission > Microsoft Graph > Delegated permissions
  3. 添加这些权限:
    • User.Read - 登录并读取用户个人资料
    • People.Read - 读取用户联系人
    • GroupMember.Read.All - 读取所有组成员身份
    • User.ReadBasic.All - 读取所有用户的基本资料
  4. 如果需要,请点击 Grant admin consent(你需要具备管理员权限)

配置

必需:启用令牌重用

重要提示: 您必须启用 OpenID 令牌重用(token reuse)此功能才能正常工作:

OPENID_REUSE_TOKENS=true

请参阅上方的 Token Reuse Configuration 以了解详情。

将以下环境变量添加到您的 .env 文件中:

# Enable Entra ID people search in permissions/sharing
USE_ENTRA_ID_FOR_PEOPLE_SEARCH=true

# Include group owners as members when searching groups
ENTRA_ID_INCLUDE_OWNERS_AS_MEMBERS=true

# Microsoft Graph API scopes (these are automatically included with the OpenID scopes)
OPENID_GRAPH_SCOPES=User.Read,People.Read,GroupMember.Read.All,User.ReadBasic.All

启用后,权限和共享对话框中的人员选择器将:

  • 同时搜索本地 LibreChat 用户和 Azure Entra ID 用户
  • 显示来自您组织的用户个人资料,包含姓名和电子邮件
  • 允许搜索并选择 Azure Entra ID 组
  • 根据您的 Graph API 权限显示组成员

注意事项

  • Token reuse (OPENID_REUSE_TOKENS=true) 是此功能正常工作的必要条件
  • OPENID_GRAPH_SCOPES 会在身份验证期间自动附加到您现有的 OPENID_SCOPE 中。
  • 群组搜索需要 GroupMember.Read.All 权限,这通常需要管理员同意。
  • 用户搜索功能需要基本的 User.ReadPeople.ReadUser.ReadBasic.All 权限。

进阶:SharePoint 集成

LibreChat 可以与 SharePoint Online 和 OneDrive for Business 集成,允许用户直接从其 SharePoint 库中浏览和附加文件。

先决条件

  1. 必须满足 Token Reuse 中的所有要求
  2. 您的 Azure 应用注册需要额外的 SharePoint 权限
  3. 您的 Azure 应用注册必须公开并授予一个 LibreChat API 范围,例如 api://<client-id>/access_as_user

添加 SharePoint 权限

  1. 在您的 Azure 应用注册中,转到 API permissions
  2. 点击 Add a permission

对于 SharePoint 访问:

  1. 选择 SharePoint(而非 Microsoft Graph)
  2. 选择 Delegated permissions
  3. 添加:AllSites.Read - 读取所有网站集中的项目

关于文件下载:

  1. 再次点击 Add a permission

  2. 选择 Microsoft Graph

  3. 选择 Delegated permissions

  4. 添加:Files.Read.All - 读取用户可访问的所有文件

  5. 点击 Grant admin consent 以授予这两个权限

配置

在启用 SharePoint 变量之前,请确保 OpenID 令牌重用配置请求了 LibreChat 应用 API 作用域。这会为 Azure 提供一个应用受众访问令牌,该令牌可用作 SharePoint 和 Graph 令牌交换的代表(on-behalf-of)断言。

# OpenID token reuse and OBO-compatible audience
OPENID_REUSE_TOKENS=true
OPENID_SCOPE=openid profile email offline_access api://<client-id>/access_as_user
OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true

# Enable SharePoint file picker
ENABLE_SHAREPOINT_FILEPICKER=true

# Your SharePoint tenant URL
SHAREPOINT_BASE_URL=https://yourtenant.sharepoint.com

# SharePoint scope for file picker (replace 'yourtenant' with your actual tenant)
SHAREPOINT_PICKER_SHAREPOINT_SCOPE=https://yourtenant.sharepoint.com/AllSites.Read

# Graph API scope for downloading files
SHAREPOINT_PICKER_GRAPH_SCOPE=Files.Read.All

使用方法

在正确配置后:

  1. 用户将在文件附件菜单中看到“From SharePoint”选项
  2. 点击它会打开原生的 SharePoint 文件选择器
  3. 用户可以浏览并选择他们有权访问的任何 SharePoint 站点或 OneDrive 中的文件
  4. 选定的文件已下载并附加到对话中

安全提示

SharePoint 集成遵循所有现有的 SharePoint 权限。用户只能访问他们在 SharePoint/OneDrive 中已有权查看的文件。

有关详细的故障排除和高级配置,请参阅:SharePoint 集成指南

这篇指南怎么样?