返回

跨域 LDAP 搜索故障排除:修复 “ldap_bind: Invalid credentials (49)” 错误

windows

跨域 LDAP 搜索故障排除指南

概述

跨域 LDAP 搜索是企业环境中的常见需求,但有时可能会遇到故障。本文将深入探讨从外部域进行 LDAP 搜索时出现的常见错误“ldap_bind: Invalid credentials (49)”,并提供全面的解决方案。

问题

当你试图从外部域(prod.com)使用 LDAP 凭据搜索另一个域(test.com)时,可能会收到错误消息“ldap_bind: Invalid credentials (49)”。这表明LDAP绑定失败,导致无法进行搜索。

解决方案

解决此问题的步骤如下:

1. 验证连接信息

  • 确认 LDAP 连接参数,包括主机名、端口号和域信息。

2. 检查凭据

  • 验证用于 LDAP 绑定的用户名和密码。
  • 确保该帐户已在目标域(test.com)创建并授予必要的权限。

3. 启用 LDAPS

  • LDAPS(安全 LDAP)使用 TLS/SSL 加密 LDAP 通信。
  • 确保在目标域(test.com)上启用了 LDAPS 并使用正确的端口(636)。

4. 检查防火墙规则

  • 确保外部域(prod.com)可以与目标域(test.com)上的 LDAP 端口(636)通信。
  • 禁用任何阻止通信的防火墙规则。

5. 验证 Kerberos 委派

  • 如果启用了 Kerberos 委派,确保目标域(test.com)已信任委托域(prod.com)并已正确配置委托。

6. 检查 LDAP 权限

  • 目标域(test.com)中的 LDAP 对象是否具有允许外部域(prod.com)进行搜索的权限。
  • 授予相关帐户或组必要的权限。

7. 禁用 ldapprecheck

  • 在目标域(test.com)上禁用 ldapprecheck 可以解决某些 LDAP 绑定问题。
  • 运行命令:
reg add HKLM\SYSTEM\CurrentControlSet\Services\ldap /v ldapprecheck /t REG_DWORD /d 0

代码示例

ldapsearch -vx -L -H ldaps://<IP of test.com>:636 -D '[email protected]' -w '**** ' -b "DC=test,DC=com" -s sub "(cn=*)"
  • -vx:提供更详细的错误信息。
  • -L:启用 LDAP 跟踪。
  • -s sub:执行子树搜索。
  • 用户名:完全限定用户名(例如,[email protected])。

结论

通过遵循上述步骤,你可以解决“ldap_bind: Invalid credentials (49)”错误,并能够从外部域进行 LDAP 搜索。确保验证连接、凭据、安全设置、权限和防火墙规则,以确保成功的 LDAP 集成。

常见问题解答

1. 为什么会收到“ldap_bind: Invalid credentials (49)”错误?

  • LDAP 凭据不正确或帐户权限不足。

2. 如何禁用 ldapprecheck?

  • 在域控制器上运行命令:
reg add HKLM\SYSTEM\CurrentControlSet\Services\ldap /v ldapprecheck /t REG_DWORD /d 0

3. 如何验证 Kerberos 委派?

  • 检查域信任并确保已启用委派。

4. 如何检查 LDAP 权限?

  • 查看 LDAP 对象的属性并验证外部域的权限。

5. 如何启用 LDAPS?

  • 在域控制器上配置 LDAPS 并使用端口 636。