You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 16.04下LDAP认证失败:Invalid credentials (49)求助

解决Ubuntu 16.04 LTS下LDAP认证报Invalid credentials (49)的问题

针对你在全新重装Ubuntu 16.04 LTS后,LDAP数据导入成功但代码认证失败的问题,我整理了几个实用的排查和解决方向,你可以逐一尝试:

  • 确认用户DN格式的正确性
    代码中使用的用户DN可能和LDAP数据库中实际存储的不一致(比如base DN结构因slapd版本变化有调整)。你可以通过以下命令查询目标用户的正确DN:

    ldapsearch -x -b "dc=your-domain,dc=com" "(uid=your-username)" dn
    

    将查询结果和代码中配置的DN做对比,确保完全匹配。

  • 检查密码存储格式的兼容性
    Ubuntu 16.04的slapd默认密码哈希算法可能和14.04版本不同(比如14.04用MD5,16.04默认用SSHA),如果导入的用户密码是旧算法生成的哈希值,可能无法被新配置的slapd识别。

    1. 查看当前slapd的默认密码哈希算法:
      slapcat -n 0 | grep olcPasswordHash
      
    2. 如果导入的密码格式不匹配,尝试重置目标用户的密码为新格式:
      ldappasswd -x -D "cn=admin,dc=your-domain,dc=com" -W "uid=your-username,ou=users,dc=your-domain,dc=com"
      
      输入管理员密码后,设置新的用户密码,再测试认证。
  • 验证slapd的访问控制列表(ACL)
    新安装的slapd默认ACL可能限制了用户的绑定权限,导致无法正常认证。你可以查看当前ACL配置:

    slapcat -n 0 | grep olcAccess
    

    确保存在允许用户自身绑定的规则,比如类似:

    olcAccess: {0}to dn.subtree="ou=users,dc=your-domain,dc=com" by self write by anonymous auth
    

    如果没有相关规则,需要修改slapd的ACL配置文件(通常在/etc/ldap/slapd.d/下)或者通过ldapmodify命令添加规则。

  • 手动测试LDAP绑定功能
    先排除代码层面的问题,用命令行手动测试用户绑定:

    ldapwhoami -x -D "uid=your-username,ou=users,dc=your-domain,dc=com" -W
    

    如果这个命令也返回Invalid credentials (49),说明问题出在LDAP服务端配置或用户数据;如果手动绑定成功,那就要检查代码中的LDAP客户端配置,比如base DN是否正确、是否开启了不必要的TLS、端口是否匹配(默认389,TLS为636)。

  • 查看slapd日志获取详细错误信息
    Ubuntu 16.04的slapd日志通常在/var/log/syslog/var/log/ldap/slapd.log中,你可以实时监控日志:

    tail -f /var/log/syslog | grep slapd
    

    当代码尝试认证时,日志会输出更具体的错误原因(比如密码不匹配、DN不存在、权限不足等),帮助你精准定位问题。

内容的提问来源于stack exchange,提问作者Stephen M -on strike-

火山引擎 最新活动