LDAP - 如何检查用户名/密码组合?

时间:2010-11-01 02:11:29

标签: ldap

使用LDAP检查用户名/密码就像尝试绑定该用户并注明结果一样简单,或者是否有特殊的LDAP“检查密码”功能?

我正在尝试在处理凌乱的LDAP存储库设置问题时获得更多“幕后”理解。

(注意:这适用于密码未在自定义属性中存储为哈希值的情况;这种情况很容易管理)

4 个答案:

答案 0 :(得分:17)

LDAP支持userPassword的比较。您发送密码,服务器执行比较并返回true或false。这是不需要登录方式来验证用户。

答案 1 :(得分:8)

查看WhoAmI扩展操作(RFC 4532)。

WhoAmI真正实现了一个目的 - 验证提交的绑定凭据。它不应该影响或激发任何登录限制" (我知道)。

WhoAmI可以使用专用二进制文件(例如" ldapwhoami")完成,或者可以使用Net :: LDAP :: Extension :: WhoAmI(Perl)或其他一些支持的语言来完成LDAP操作。请注意"测试密码"使用一些"搜索"功能是一种不明智的测试方法。

例如,如果我的DN是" uid = max,ou = users,dc = company,dc = com"我的密码是" @ secret",可以通过Linux机箱上的专用二进制文件执行此操作(注意-ZZ用于TLS机密性,在您的环境中可能不受支持或可选):

ldapwhoami -x -w "@secret" -D uid=max,ou=users,dc=company,dc=com -ZZ -H ldap://address.of.your.ldapserver/

如果用户/通行证组合正确,则返回的答案为:

  

DN:UID =最大值,OU =用户,DC =公司,DC = COM

如果用户/通行证组合不正确,则返回的答案是(通常):

  

(49)凭证无效

这可能意味着,正如我所说,密码和/或用户名错误,用户不存在,或者LDAP服务器的ACL因无法进行身份验证而被破坏。通常情况下,用户/通行证组合输入错误,或者用户不存在。

最后,LDAPWhoAmI操作是一种非常轻量级且简单的验证凭据的方法。它也可以通过其他机制工作(例如:Kerberos Single Sign-On,Digest-MD5等)。

答案 2 :(得分:4)

注意使用bind来检查用户名/密码,在某些系统上它会被视为登录,并且登录限制可能会失败。

使用compare是检查密码的更好选择。

答案 3 :(得分:3)

绑定为该用户就足够了。在绑定过程中检查密码。