【问题标题】:authentication failed using ldapsearch使用 ldapsearch 验证失败
【发布时间】:2016-08-12 04:15:00
【问题描述】:

我使用 Apache Directory Studio 创建了一个本地 ldap 服务器。使用 uid“djiao1”和密码“123456”(SHA 哈希密码)创建用户条目。

我能够使用以下 ldapsearch 命令搜索用户:

ldapsearch -H ldap://localhost:10389 -x uid=djiao1
# extended LDIF
#
# LDAPv3
# base <> (default) with scope subtree
# filter: uid=djiao1
# requesting: ALL
#

# djiao, Users, example.com
dn: cn=djiao,ou=Users,dc=example,dc=com
sn: jiao
cn: djiao
objectClass: top
objectClass: inetOrgPerson
objectClass: person
objectClass: organizationalPerson
userPassword:: e3NoYX1mRXFOQ2NvM1lxOWg1WlVnbEQzQ1pKVDRsQnM9
uid: djiao1

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

但是,如果我使用 -W 运行以提示密码并输入“123456”,我会收到“无效凭据”错误:

ldapsearch -H ldap://localhost:10389 -W -x uid=djiao1
Enter LDAP Password: 
ldap_bind: Invalid credentials (49)
additional info: INVALID_CREDENTIALS: Bind failed: Invalid authentication

我尝试了显示为 userPassword e3NoYX1mRXFOQ2NvM1lxOWg1WlVnbEQzQ1pKVDRsQnM9 的非常长的字符串,但仍然遇到相同的错误。

以下屏幕截图验证成功,用户密码为 123456。为什么密码不起作用?

【问题讨论】:

  • 长字符串是你密码的hash,输入它作为密码是没有意义的,因为ldap比较hash_func(input_password) == hash_in_databasehash_func(hash_in_database)==hash_in_database的概率很低,看起来不像密码123456知道admin密码可以改,不知道admin密码不重装改不了,rootunix密码。
  • @user1034749 我上传了一张用于在 AD Studio 中验证密码的屏幕截图,它清楚地显示了123456 是密码。

标签: authentication ldap


【解决方案1】:

我想你的问题是你不使用登录名,而是使用密码, 试试这样的:

ldapsearch -x -LLL -H ldap://localhost:10389/  -b dc=example,dc=com  -D "cn=djiao,ou=Users,dc=example,dc=com" -w 123456 uid=djiao1

这里的关键时刻是你使用哪个密码的用户的完整 dn:

cn=djiao,ou=Users,dc=example,dc=com

【讨论】:

  • 这行得通,没有-b dc=example,dc=com,我也可以逃脱。为什么在提供 uid 时需要-D 选项?
  • @Nasreddin 您实际上没有提供 uid,ldapsearch 执行搜索,因此 'uid=XXX' 被解释为搜索过滤器,而不是登录。
  • 你能看看我的另一个post吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-05
  • 1970-01-01
  • 2016-04-03
  • 1970-01-01
  • 2012-04-06
  • 2012-05-26
  • 2014-05-24
相关资源
最近更新 更多