Azure Entra
了解如何配置 LibreChat 以使用 Azure Entra 进行用户身份验证。
- 前往 Azure Portal 并使用您的账户登录。
- 在搜索框中输入 "Azure Entra" 并点击它。
- 在左侧菜单中,点击 App registrations,然后点击 New registration。
- 为您的应用命名,并选择 Web 作为平台类型。
- 在 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。
- 您将看到一个包含有关您的应用程序信息的概览页面。请复制应用程序(客户端)ID 和目录(租户)ID 并将其保存到某处。
- 在左侧菜单中,点击 Authentication,然后在 Implicit grant and hybrid flows 下勾选 Access tokens 和 ID tokens。
- 在左侧菜单中,点击 Certificates & Secrets,然后点击 New client secret。为您的密钥命名并设置过期日期,然后点击 Add。您将看到一个包含密钥的 Value 列。请将其复制并妥善保存。切勿与他人分享!
- 如果您想通过组来限制访问,则应将 groups 声明添加到令牌中。为此,请转到 Token configuration 并点击 Add group claim。选择您想要包含在令牌中的组,然后点击 Add。
- 打开项目文件夹中的 .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。
- 保存 .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 集成,以通过人员和群组搜索功能增强权限和共享系统。
先决条件
- 您的 Azure 应用注册必须具备相应的 Microsoft Graph API 权限
- 某些 Graph API 范围(例如
GroupMember.Read.All)可能需要管理员同意。
添加 Graph API 权限
- 在您的 Azure 应用注册中,转到 API permissions
- 点击 Add a permission > Microsoft Graph > Delegated permissions
- 添加这些权限:
User.Read- 登录并读取用户个人资料People.Read- 读取用户联系人GroupMember.Read.All- 读取所有组成员身份User.ReadBasic.All- 读取所有用户的基本资料
- 如果需要,请点击 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.Read、People.Read和User.ReadBasic.All权限。
进阶:SharePoint 集成
LibreChat 可以与 SharePoint Online 和 OneDrive for Business 集成,允许用户直接从其 SharePoint 库中浏览和附加文件。
先决条件
- 必须满足 Token Reuse 中的所有要求
- 您的 Azure 应用注册需要额外的 SharePoint 权限
- 您的 Azure 应用注册必须公开并授予一个 LibreChat API 范围,例如
api://<client-id>/access_as_user
添加 SharePoint 权限
- 在您的 Azure 应用注册中,转到 API permissions
- 点击 Add a permission
对于 SharePoint 访问:
- 选择 SharePoint(而非 Microsoft Graph)
- 选择 Delegated permissions
- 添加:
AllSites.Read- 读取所有网站集中的项目
关于文件下载:
-
再次点击 Add a permission
-
选择 Microsoft Graph
-
选择 Delegated permissions
-
添加:
Files.Read.All- 读取用户可访问的所有文件 -
点击 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使用方法
在正确配置后:
- 用户将在文件附件菜单中看到“From SharePoint”选项
- 点击它会打开原生的 SharePoint 文件选择器
- 用户可以浏览并选择他们有权访问的任何 SharePoint 站点或 OneDrive 中的文件
- 选定的文件已下载并附加到对话中
安全提示
SharePoint 集成遵循所有现有的 SharePoint 权限。用户只能访问他们在 SharePoint/OneDrive 中已有权查看的文件。
有关详细的故障排除和高级配置,请参阅:SharePoint 集成指南
这篇指南怎么样?