使用LDAP检查用户名/密码就像尝试绑定该用户并注明结果一样简单,或者是否有特殊的LDAP“检查密码”功能?
我正在尝试在处理凌乱的LDAP存储库设置问题时获得更多“幕后”理解。
(注意:这适用于密码未在自定义属性中存储为哈希值的情况;这种情况很容易管理)
答案 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)
绑定为该用户就足够了。在绑定过程中检查密码。