雷池 WAF 支持通过 LDAP(轻量级目录访问协议)协议,实现与企业现有的目录服务集成,让用户使用现有的企业账号安全登录应用或网站。支持的 LDAP 服务包括但不限于 Microsoft Active Directory、OpenLDAP、Apache Directory 等。
LDAP 协议简介
LDAP(Lightweight Directory Access Protocol)是一种用于访问和维护分布式目录信息服务的应用协议。它常被用作单点登录的基础架构,允许用户使用单一凭证访问多个系统。LDAP 目录通常用于存储用户信息、组织结构、权限设置等数据。
配置步骤
-
在雷池WAF控制台中,导航到「身份认证」→「配置」。
-
点击「第三方登录配置」按钮,选择「LDAP」类型。
-
填写以下参数:
- LDAP 服务器 URL
- Bind DN
- Bind 密码
- 用户 baseDN
- 查询条件
-
配置无误后,点击「保存」按钮完成 LDAP 身份源配置。
配置参数说明
1. LDAP 服务器 URL
格式为ldap://主机名:端口或ldaps://主机名:端口(使用SSL)。
-
标准端口:389(非加密)或636(SSL加密)
-
示例:
ldap://ldap.example.com:389(标准连接)ldaps://ldap.example.com:636(SSL加密连接)ldap://192.168.1.100:389(使用IP地址)
2. Bind DN
用于绑定到 LDAP 服务器的账号,该账号需要有足够权限查询用户信息。
- Active Directory 示例:
cn=Administrator,cn=Users,dc=domain,dc=com - OpenLDAP 示例:
cn=admin,dc=example,dc=com
建议使用只读权限的专用服务账号,而不是管理员账号。
3. Bind 密码
Bind DN 账号的密码。
4. 用户 baseDN
指定从哪个节点开始搜索用户,这会影响性能和搜索范围。
- Active Directory 示例:
cn=Users,dc=domain,dc=com - OpenLDAP 示例:
ou=People,dc=example,dc=com
5. 查询条件
用于匹配 LDAP 目录中的用户条目的过滤表达式,支持使用%s作为用户输入的用户名占位符。
-
基础示例:
(&(objectClass=person)(uid=%s))- 这表示找到 objectClass 为 person,且 uid 等于用户输入用户名的条目
-
Active Directory 示例:
(&(objectClass=user)(sAMAccountName=%s)) -
OpenLDAP 示例:
(&(objectClass=inetOrgPerson)(uid=%s))
各类 LDAP 服务器配置示例(仅供参考)
Microsoft Active Directory
解释
LDAP 服务器 URL: ldap://ad.company.com:389
Bind DN: cn=LDAPService,cn=Users,dc=company,dc=com
Bind 密码: (服务账号密码)
用户 baseDN: cn=Users,dc=company,dc=com
查询条件: (&(objectClass=user)(sAMAccountName=%s))
Copy
OpenLDAP
解释
LDAP 服务器 URL: ldap://openldap.company.com:389
Bind DN: cn=admin,dc=company,dc=com
Bind 密码: (管理员密码)
用户 baseDN: ou=People,dc=company,dc=com
查询条件: (&(objectClass=person)(uid=%s))
Copy
FreeIPA
解释
LDAP 服务器 URL: ldap://ipa.company.com:389
Bind DN: uid=admin,cn=users,cn=accounts,dc=company,dc=com
Bind 密码: (管理员密码)
用户 baseDN: cn=users,cn=accounts,dc=company,dc=com
查询条件: (&(objectClass=person)(uid=%s))
Copy
用户认证流程
应用开启「身份认证」功能并选择 LDAP 登录方式后:
-
当用户访问应用时,会提示使用 LDAP 账号认证登录。
-
用户使用 LDAP 账号进行登录。
-
新用户首次认证授权后需要雷池管理员在控制台进行「审核确认」。
- 通过审核的用户即获得此应用授权,后续访问无需审核,认证通过即可成功登录。
- 未通过审核的用户访问应用将会被拦截,无法访问。
用户管理
在「身份认证」→「用户管理」页面,您可以:
- 查看用户是否已绑定 LDAP。
- 对新用户进行审核操作。
- 管理用户的访问权限。
统一认证设置(可选)
如果您希望用户只需认证一次就可以访问多个应用,可以配置统一认证:
- 前往「身份认证」→「设置」→「统一认证」。
- 开启统一认证功能。
- 将应用加入统一认证。
- 启用统一认证后,用户只需通过一次企业微信扫码认证,即可访问所有参与统一认证的应用。
常见问题
Q: 用户无法登录是什么原因?
A: 如果连接成功但用户无法登录,请检查:
-
用户 baseDN:确保用户实际存在于指定的 baseDN 下
-
查询条件:
- 确保查询条件格式正确
- 验证
%s占位符使用正确 - 检查属性名称是否正确(如 uid、sAMAccountName 等)
- 检查是否填写最外层括号
-
用户账号:确认用户账号在 LDAP 中处于活动状态,未被锁定或禁用
Q: 连接失败是什么原因?
A: 如果 LDAP 连接失败,请检查:
- 服务器 URL 格式:确保格式正确,包含正确的协议(ldap://或ldaps://)、主机名和端口
- 网络连接:确保雷池 WAF 服务器可以访问 LDAP 服务器
- Bind DN 和密码:确保绑定账号和密码正确
- SSL 证书:如使用 ldaps://,确保证书有效或配置信任关系
Q: 搜索条件中的 %s 代表什么?
A: %s 是一个占位符,会在用户登录时自动替换为用户输入的用户名。例如,用户输入"john",搜索条件(&(objectClass=person)(uid=%s))会变为(&(objectClass=person)(uid=john))。
Q: 是否支持 Active Directory 的安全组过滤?
A: 您可以在查询条件中添加组成员资格条件,例如:(&(objectClass=user)(sAMAccountName=%s)(memberOf=CN=AllowedGroup,OU=Groups,DC=company,DC=com))
Q: 我的查询条件有语法错误怎么办?
A: LDAP 查询条件使用前缀表示法,确保括号匹配,并检查 attribute=value 语法。可以使用在线 LDAP 过滤器语法检查工具进行验证。