20.14. 使用 Active Directory 格式的用户名进行身份验证

当您连接到目录服务器时,您必须指定用户的可分辨名称(DN),如 uid=user_name,ou=People,dc=example,dc=com 进行验证。但是 DN 可能会难以记住。如果启用并配置 AD DN 插件,您可以使用 Active Directory 格式的用户名,如 user_nameuser_name@,而不是 DN。
启用插件和用户使用不是 DN 格式的用户名连接到目录后,目录服务器会根据插件的配置搜索 DN。如果搜索返回一个 DN,Directory 服务器会使用此 DN 进行身份验证。如果返回任何或多个 DN,身份验证会失败。
注意
您只能使用命令行启用和配置 AD DN 插件。
要启用并配置插件,使其使用 example.com 作为默认域:
  1. 添加 cn=addn,cn=plugins,cn=config 插件条目并设置默认域:
    # ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
    dn: cn=addn,cn=plugins,cn=config
    changetype: add
    objectClass: top
    objectClass: nsSlapdPlugin
    objectClass: extensibleObject
    cn: addn
    nsslapd-pluginPath: libaddn-plugin
    nsslapd-pluginInitfunc: addn_init
    nsslapd-pluginType: preoperation
    nsslapd-pluginEnabled: on
    nsslapd-pluginId: addn
    nsslapd-pluginVendor: 389 Project
    nsslapd-pluginVersion: 1.3.6.0
    nsslapd-pluginDescription: Allow AD DN style bind names to LDAP
    addn_default_domain: example.com
    插件条目中所需的 addn_default_domain 参数会设置默认域。如果在身份验证过程中指定的用户名不包含域名,则插件会附加此域。
  2. 为默认域添加配置条目:
    # ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
    dn: cn=example.com,cn=addn,cn=plugins,cn=config
    changetype: add
    objectClass: top
    objectClass: extensibleObject
    cn: example.com
    addn_base: ou=People,dc=example,dc=com
    addn_filter: (&(objectClass=account)(uid=%s))
    有关示例中使用的参数的详情,请查看 红帽目录服务器配置、命令和文件参考 中的描述。
    警告
    必须至少为默认域添加配置条目。如果缺少该条目,Directory 服务器将无法启动。
  3. 另外,您还可以按照上一步所述创建额外的域配置来支持多个域名。每个域配置都可以使用不同的搜索基础和过滤器。
  4. 重启 Directory 服务器实例:
    # dsctl instance_name restart