【发布时间】:2013-04-21 06:48:43
【问题描述】:
是否有一种简单的方法可以根据 LDAP 实例测试用户的凭据?我知道如何编写一个获取“用户 DN”和密码的 Java 程序,并根据 LDAP 实例对其进行检查。但是有没有更简单的方法?特别是一种不仅对用户进行身份验证,而且列出所有用户角色的方法。
【问题讨论】:
标签: directory ldap opends opendj
是否有一种简单的方法可以根据 LDAP 实例测试用户的凭据?我知道如何编写一个获取“用户 DN”和密码的 Java 程序,并根据 LDAP 实例对其进行检查。但是有没有更简单的方法?特别是一种不仅对用户进行身份验证,而且列出所有用户角色的方法。
【问题讨论】:
标签: directory ldap opends opendj
ldapwhoami -vvv -h <hostname> -p <port> -D <binddn> -x -w <passwd>,其中binddn 是您正在对其凭据进行身份验证的人员的 DN。
成功后(即有效凭据),您将获得Result: Success (0)。失败时,你会得到ldap_bind: Invalid credentials (49)。
【讨论】:
uid=john.doe,ou=People,dc=example,dc=com。
ldapwhoami -D 'cn=username,ou=users,dc=compagny,dc=com' -x -W
使用ldapsearch 进行身份验证。 opends 版本可能使用如下:
ldapsearch --hostname hostname --port port \
--bindDN userdn --bindPassword password \
--baseDN '' --searchScope base 'objectClass=*' 1.1
【讨论】:
--bindPasswrd password 替换为-W(提示输入密码)可以解决问题。
您应该查看 Softerra 的 LDAP 浏览器(免费版 LDAP 管理员),可以在这里下载:
http://www.ldapbrowser.com/download.htm
我在所有 Active Directory、OpenLDAP 和 Novell eDirectory 开发中都广泛使用了这个应用程序,它绝对是无价之宝。
如果您只是想检查用户名\密码组合是否有效,您只需为 LDAP 服务器创建一个“配置文件”,然后在创建过程的第 3 步中输入凭据:
通过单击“完成”,您将使用您指定的凭据、身份验证机制和密码有效地向服务器发出绑定。如果绑定不起作用,系统会提示您。
【讨论】:
注意,如果您不知道完整的绑定 DN,您也可以使用您的普通用户名或电子邮件 -U
ldapsearch -v -h contoso.com -U turiya.gouw@contoso.com -w 'MY_PASSWORD' -b 'DC=contoso,DC=com' '(objectClass=computer)'
【讨论】:
身份验证通过一个简单的 ldap_bind 命令完成,该命令采用用户 DN 和密码。绑定成功后,用户被认证。通常,您会通过基于用户 uid 或电子邮件地址的 ldap_search 获取用户 DN。
获取用户角色是不同的,因为它是一个 ldap_search,并且取决于角色在 ldap 中的存储位置和方式。但是您可能能够在用于查找用户 DN 的 lap_search 期间检索角色。
【讨论】: