雷池WAF的身份认证 - LDAP

133 阅读5分钟

雷池 WAF 支持通过 LDAP(轻量级目录访问协议)协议,实现与企业现有的目录服务集成,让用户使用现有的企业账号安全登录应用或网站。支持的 LDAP 服务包括但不限于 Microsoft Active Directory、OpenLDAP、Apache Directory 等。

LDAP 协议简介

LDAP(Lightweight Directory Access Protocol)是一种用于访问和维护分布式目录信息服务的应用协议。它常被用作单点登录的基础架构,允许用户使用单一凭证访问多个系统。LDAP 目录通常用于存储用户信息、组织结构、权限设置等数据。

配置步骤

  1. 在雷池WAF控制台中,导航到「身份认证」→「配置」。

  2. 点击「第三方登录配置」按钮,选择「LDAP」类型。

  3. 填写以下参数:

    • LDAP 服务器 URL
    • Bind DN
    • Bind 密码
    • 用户 baseDN
    • 查询条件
  4. 配置无误后,点击「保存」按钮完成 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 登录方式后:

  1. 当用户访问应用时,会提示使用 LDAP 账号认证登录。

  2. 用户使用 LDAP 账号进行登录。

  3. 新用户首次认证授权后需要雷池管理员在控制台进行「审核确认」。

    • 通过审核的用户即获得此应用授权,后续访问无需审核,认证通过即可成功登录。
    • 未通过审核的用户访问应用将会被拦截,无法访问。

用户管理

在「身份认证」→「用户管理」页面,您可以:

  • 查看用户是否已绑定 LDAP。
  • 对新用户进行审核操作。
  • 管理用户的访问权限。

统一认证设置(可选)

如果您希望用户只需认证一次就可以访问多个应用,可以配置统一认证:

  • 前往「身份认证」→「设置」→「统一认证」。
  • 开启统一认证功能。
  • 将应用加入统一认证。
  • 启用统一认证后,用户只需通过一次企业微信扫码认证,即可访问所有参与统一认证的应用。

常见问题

Q: 用户无法登录是什么原因?

A: 如果连接成功但用户无法登录,请检查:

  1. 用户 baseDN:确保用户实际存在于指定的 baseDN 下

  2. 查询条件

    • 确保查询条件格式正确
    • 验证%s占位符使用正确
    • 检查属性名称是否正确(如 uid、sAMAccountName 等)
    • 检查是否填写最外层括号
  3. 用户账号:确认用户账号在 LDAP 中处于活动状态,未被锁定或禁用

Q: 连接失败是什么原因?

A: 如果 LDAP 连接失败,请检查:

  1. 服务器 URL 格式:确保格式正确,包含正确的协议(ldap://或ldaps://)、主机名和端口
  2. 网络连接:确保雷池 WAF 服务器可以访问 LDAP 服务器
  3. Bind DN 和密码:确保绑定账号和密码正确
  4. 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 过滤器语法检查工具进行验证。