是否有一种简单的方法可以针对 LDAP 实例测试用户的凭据?我知道如何编写一个 Java 程序,使用“ UserDN”和密码,并将其与 LDAP 实例进行检查。但是有没有更简单的办法呢?特别是一种不仅验证用户身份,而且列出所有用户角色的方法。
身份验证是通过一个简单的 ldap _ bind 命令完成的,该命令接受用户 DN 和密码。绑定成功时对用户进行身份验证。通常您会通过基于用户 uid 或电子邮件地址的 ldap _ search 获得用户 DN。
获取用户角色是不同的,因为它是一个 ldap _ search,并且取决于角色存储在 ldap 中的位置和方式。但是您可以在 lap _ search 用于查找用户 DN 期间检索角色。
使用 ldapsearch进行身份验证。可以使用 opends版本如下:
ldapsearch
opends
ldapsearch --hostname hostname --port port \ --bindDN userdn --bindPassword password \ --baseDN '' --searchScope base 'objectClass=*' 1.1
你应该看看 Softerra 的 LDAP 浏览器(LDAP 管理员的 免费版) ,可以在这里下载:
Http://www.ldapbrowser.com/download.htm
我在所有的 ActiveDirectory、 OpenLDAP 和 Novell eDirectory 开发中都广泛地使用了这个应用程序,它绝对是无价之宝。
如果您只是想检查用户名密码组合是否有效,那么您只需要为 LDAP 服务器创建一个“ Profile”,然后在创建过程的步骤3中输入凭据:
通过单击“ Finish”,您将使用指定的凭据、认证机制和密码有效地发出对服务器的绑定。如果绑定不起作用,系统会提示您。
ldapwhoami -vvv -h <hostname> -p <port> -D <binddn> -x -w <passwd>,其中 binddn是您正在验证其凭据的人的 DN。
ldapwhoami -vvv -h <hostname> -p <port> -D <binddn> -x -w <passwd>
binddn
成功时(例如,有效的凭证) ,你得到 Result: Success (0); 失败时,你得到 ldap_bind: Invalid credentials (49)。
Result: Success (0)
ldap_bind: Invalid credentials (49)
注意,如果您不知道您的完整绑定 DN,您也可以使用您的正常用户名或电子邮件与 -U
-U
ldapsearch -v -h contoso.com -U turiya.gouw@contoso.com -w 'MY_PASSWORD' -b 'DC=contoso,DC=com' '(objectClass=computer)'
由于某些原因,公认的答案不起作用,参数不完全相同(至少在 Linux Alpine中)。这个命令应该可以起作用:
ldapsearch -v -H ldap://dc1.MYDOMAIN.com -D "cn=Administrator,cn=Users,dc=MYDOMAIN,dc=com" -x -w SomeP@ssWord -Z -d 4
这对于调试 LDAP 非常有帮助,因为如果存在问题,它会输出正确的问题。