Azure AD 域服务 (LDAPS) 集成
本教程是社区贡献的内容,不属于 Open WebUI 团队的官方支持范围。它仅作为如何针对特定用例自定义 Open WebUI 的演示。想要贡献?请查看贡献教程。
本指南解释了如何将 Open WebUI 与 Azure AD 域服务 (AAD DS) 集成,以实现安全的 LDAP (LDAPS) 身份验证。
1. 前提条件
| 项目 | 描述 |
|---|---|
| Azure 账户 | 拥有部署 AAD DS 和修改 NSG 权限的账户。 |
| OpenSSL 3.x | 用于生成测试用的自签名 PFX 证书。 |
| 域名 | 我们将以 openwebui.onmicrosoft.com 为例(您的 AAD 主域名)。 |
| Open WebUI 服务器 | 一个正在运行的 Open WebUI 实例,通过 Docker 或裸机部署。 |
在生产环境中,请使用由公共证书颁发机构 (CA) 颁发的 PFX 证书,并将 LDAP_VALIDATE_CERT 设置为 true。
2. 部署 Azure AD 域服务
-
在 Azure 门户中,搜索并选择 Azure AD Domain Services。
-
点击 创建。
-
选择您的 订阅 和 资源组(或创建一个新的)。
-
对于 DNS 域名,输入您的域名(例如
openwebui.onmicrosoft.com)。该值稍后将用于LDAP_SEARCH_BASE。 -
保持 SKU、副本集 等默认设置,然后点击 查看 + 创建。

-
部署完成后,导航到 Azure AD DS 页面并记下 虚拟网络 / 子网。如果您的 Open WebUI 服务器不在同一个 VNet 中,您必须创建一个 NSG 规则以允许 636 端口的流量。
3. 查找安全 LDAP 外部 IP
-
导航到您的 AAD DS 页面 → 概览。
-
在 安全 LDAP 下,找到 外部 IP 地址。
-
此 IP(例如
1.222.222.222)将是您.env文件中的LDAP_SERVER_HOST值。
4. 启用安全 LDAP (LDAPS)
4.1. 证书 (PFX) 要求
| 属性 | 要求 |
|---|---|
| 格式 | PKCS #12 (.pfx) |
| 加密 | RSA 2048 / SHA-256 |
| 使用者备用名称 (SAN) | 必须包含通配符:*.{your_domain}.onmicrosoft.com 和 {your_domain}.onmicrosoft.com。 |
| 密码 | 上传时需要。请务必记住它。 |
对于生产环境,我们建议使用 Let’s Encrypt 或其他公共 CA。下面的自签名过程仅用于测试目的。
4.2. 使用 OpenSSL 生成通配符 PFX(用于测试)
-
创建
openssl_wildcard.cnf:[ req ]
distinguished_name = req_distinguished_name
x509_extensions = v3_ca
req_extensions = v3_req
prompt = no
[ req_distinguished_name ]
C = US
ST = CA
L = San Francisco
O = MyTestOrg
OU = TestDepartment
CN = *.{your_domain}.onmicrosoft.com
[ v3_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:FALSE
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = *.{your_domain}.onmicrosoft.com
DNS.2 = {your_domain}.onmicrosoft.com将
{your_domain}替换为您实际的域名。 -
生成密钥和证书:
# 生成私钥
openssl genrsa -out privatekey_wildcard.key 2048
# 创建证书签名请求 (CSR)
openssl req -new -key privatekey_wildcard.key \
-out wildcard.csr -config openssl_wildcard.cnf
# 创建自签名证书(有效期 365 天)
openssl x509 -req -days 365 -in wildcard.csr \
-signkey privatekey_wildcard.key \
-out certificate_wildcard.crt \
-extensions v3_req -extfile openssl_wildcard.cnf
# 打包成 PFX 文件
openssl pkcs12 -export -out certificate_wildcard.pfx \
-inkey privatekey_wildcard.key -in certificate_wildcard.crt -
上传到 AAD DS:
- 导航到您的 AAD DS 页面 → 安全 LDAP。
- 点击 上传证书 按钮,选择
certificate_wildcard.pfx,并输入密码。 - 将 安全 LDAP 切换为 已启用,然后点击 保存。

5. 配置网络安全组 (NSG)
| 设置 | 示例值 |
|---|---|
| 名称 | Allow-LDAPS |
| 优先级 | 310 |
| 源 | Any |
| 目标端口 | 636 |
| 协议 | TCP |
| 操作 | Allow |

如果允许从互联网访问,请将源 IP 范围限制为安全所需的最小值。如果 Open WebUI 在同一个 VNet 中,可以跳过此步骤。
6. 在 Entra ID 中创建服务账户
-
在 Azure 门户中,导航到 Entra ID → 用户 → 新建用户。
-
设置用户名(例如
ldap@{your_domain}.onmicrosoft.com)。 -
设置一个强密码,并取消勾选 用户必须在下次登录时更改密码。
-
转到 组 选项卡,将用户添加到 AAD DC Administrators 组(查询所有用户所需)。

7. 配置 Open WebUI 环境变量 (.env)
以下是 .env 文件的示例配置:
###############################################
# LDAP
###############################################
ENABLE_LDAP="true"
LDAP_SERVER_LABEL="Azure AD DS"
LDAP_SERVER_HOST="1.222.222.222"
LDAP_SERVER_PORT="636"
# TLS 选项
LDAP_USE_TLS="true"
LDAP_VALIDATE_CERT="false" # 对于公共 CA,请设置为 true
#LDAP_CA_CERT_FILE="/etc/ssl/certs/openwebui_ca.crt"
# 绑定账户
LDAP_APP_DN="ldap@{your_domain}.onmicrosoft.com"
LDAP_APP_PASSWORD="<STRONG-PASSWORD>"
# 搜索范围
LDAP_SEARCH_BASE="DC={your_domain},DC=onmicrosoft,DC=com"
LDAP_ATTRIBUTE_FOR_USERNAME="sAMAccountName"
LDAP_ATTRIBUTE_FOR_MAIL="userPrincipalName"
LDAP_SEARCH_FILTER="(&(objectClass=user)(objectCategory=person))"
# 组同步(可选)
# ENABLE_LDAP_GROUP_MANAGEMENT="true"
# ENABLE_LDAP_GROUP_CREATION="true"
# LDAP_ATTRIBUTE_FOR_GROUPS="memberOf"
请将 {your_domain} 和 <STRONG-PASSWORD> 等占位符替换为您实际的值。
8. 配置组同步(可选)
Open WebUI 可以直接从您的 LDAP 目录同步组成员身份。当用户登录时,他们的组信息将在 Open WebUI 中获取并更新。
要启用此功能,请添加以下环境变量:
ENABLE_LDAP_GROUP_MANAGEMENT="true":启用组管理功能。ENABLE_LDAP_GROUP_CREATION="true":如果 LDAP 中的组在 Open WebUI 中不存在,它将自动创建。LDAP_ATTRIBUTE_FOR_GROUPS="memberOf":指定包含用户组成员身份的 LDAP 属性。在 Active Directory 环境中,memberOf是用于此目的的标准属性。
9. 向服务器添加 CA 证书(可选)
要启用完整的 TLS 校验 (LDAP_VALIDATE_CERT="true"):
sudo cp certificate_wildcard.crt /usr/local/share/ca-certificates/openwebui.crt
sudo update-ca-certificates
更改后请重启 Open WebUI。
10. 测试 LDAPS 连接
10.1. OpenSSL 握手检查
openssl s_client -connect 1.222.222.222:636 -showcerts
查找 Verify return code: 0 (ok) 以确认证书受信任。
10.2. ldapsearch (绑定测试)
ldapsearch -H ldaps://1.222.222.222 \
-D "ldap@openwebui.onmicrosoft.com" -w '<PASSWORD>' \
-b "DC=openwebui,DC=onmicrosoft,DC=com" \
-s sub "(sAMAccountName=<test_user_id>)"
搜索成功将返回指定用户的详细信息。