针对 Active Directory 的 ldapsearch 验证失败 + 搜索参数错误

Thi*_*his 3 openldap active-directory ldap

我正在使用ldapsearchOpenLDAP 工具在我们的公司 Active Directory 中搜索我的电子邮件和电话号码。此查询是一项测试,以确保我可以针对域进行身份验证,以便我可以使用 NTLM 身份验证设置 linux wiki。我的理论是,如果我可以成功查询 AD 信息,那么我离让我的 wiki 对 AD 进行身份验证更近了一步(我有在 ActiveDirectory 下设置 moin wiki 的说明)。

问题是我似乎无法ldapsearch正确查询。我在网上看到很多教程都表明-D应该是这样的-D "Americas\John_Marsharll";但是,ldap_bind: Invalid credentials (49)当我使用Americas\John_Marshall. 我唯一一次得到有意义的结果是当我使用以下参数进行查询时。但是,即使那样,我也无法弄清楚如何获取电子邮件和电话号码。

[John_Marshall@WN7-BG3YSM1 ~]$ ldapsearch -x -h 10.1.1.1 \
 -b "cn=Users,dc=Americas" mail telephonenumber -D "cn=John_Marshall,dc=Americas"
# extended LDIF
#
# LDAPv3
# base <cn=Users,dc=Americas> with scope subtree
# filter: (objectclass=*)
# requesting: mail telephonenumber -D cn=John_Marshall,dc=Americas 
#

# search result
search: 2
result: 32 No such object

# numResponses: 1
[John_Marshall@WN7-BG3YSM1 ~]$
Run Code Online (Sandbox Code Playgroud)

有人可以给我指出我在ldapsearch上面的查询中做错了什么吗?我们的 AD ldap 服务器是 10.1.1.1,AD 域是“Americas”。

最终解决方案的步骤(实际答案在 Wolfgang 的回复中):

使用评论中的信息和沃尔夫冈的回答,我能够将解决方案拼凑在一起,但并不是很顺利......

ldp.exe对我来说不是很有用;但是,我开始嗅探 Outlook 对其进行身份验证的服务器,并在我的查询中替换了该 IP 地址。突然间,我获得了正确的身份验证,并使用ldapsearch -x -h <new_ip_addr> -D "Americas\John_Marshall" -W -b "dc=MyCompanyName,dc=com". 这个查询的结果(基本上是我们大部分公司 LDAP 目录的原始数据转储)允许我优化-b参数(搜索基础)。

wol*_*gsz 5

好吧,这有一些可能是错误的:

  1. 您指定了简单的身份验证,但没有提供密码,也没有告诉 ldapsearch 从命令行收集密码。用户 John_Marshall 没有密码吗?如果他确实有一个,则必须以某种方式提供。指定-w <passsword>-W(在提示时输入密码)。

  2. 用户真的被绑定了cn=John_Marshall,dc=Americas吗?在我们的 AD 中,仅作为示例,我自己的 binddn 将是“ dn: CN=Wolfgang Schulze-Zachau,CN=Users,DC=aminocom,DC=com”,即名字和姓氏之间没有下划线

  3. " cn=John_Marshall,dc=Americas"的绑定是可能的,但对我来说看起来有点短。当然,这一切都取决于您的 AD 是如何配置的。您能否验证这确实是该用户的 DN?当您查看 AD 用户和计算机时,通向该用户的树项目的完整列表是什么?

  4. 如果您不指定过滤器,您将获得搜索库中所有项目的列表。那可能是一个很长的清单。

操作编辑

正确的咒语是:

[John_Marshall@WN7-BG3YSM1 ~]$ ldapsearch -x -h <new_ip_addr> \
-D "Americas\John_Marshall" -W \
-b "cn=John_Marshall,ou=users,ou=austin,dc=amer,dc=MyComanyName,dc=com" \
mail telephonenumber ""
Run Code Online (Sandbox Code Playgroud)