Azure AD LDAP
本教程由社区贡献,不受 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。
-
点击 Create(创建)。
-
选择您的订阅和资源组(或创建新的)。
-
在 DNS domain name(DNS 域名) 中输入您的域名(例如
openwebui.onmicrosoft.com)。此值稍后将用于LDAP_SEARCH_BASE。 -
保留 SKU、Replica Set 等的默认设置,点击 Review + create(审查 + 创建)。

-
部署完成后,导航至 Azure AD DS 页面,记录虚拟网络/子网。如果您的 Open WebUI 服务器不在同一 VNet 中,则必须创建 NSG 规则以允许端口 636 上的流量。
3. 查找安全 LDAP 外部 IP
-
导航至 AAD DS 页面 → Overview(概述)。
-
在 Secure LDAP(安全 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 页面 → Secure LDAP(安全 LDAP)。
- 点击 Upload certificate(上传证书) 按钮,选择
certificate_wildcard.pfx,并输入密码。 - 将 Secure LDAP 切换为 Enabled(已启用) 并点击 Save(保存)。

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

如果允许从互联网访问,请将源 IP 范围限制为安全所需的最小范围。如果 Open WebUI 在同一 VNet 中,可以跳过此步骤。
6. 在 Entra ID 中创建服务账户
-
在 Azure 门户中,导航至 Entra ID → Users(用户) → New user(新建用户)。
-
设置用户名(例如
ldap@{your_domain}.onmicrosoft.com)。 -
设置强密码并取消选中 User must change password at next sign-in(用户必须在下次登录时更改密码)。
-
转到 Groups(群组) 标签,将用户添加到 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 属性。memberOf是 Active Directory 环境中此目的的标准属性。
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>)"搜索成功将返回指定用户的详细信息。