我正在使用ldapsearch
OpenLDAP 工具在公司 Active Directory 中搜索我的电子邮件和电话号码。此查询是一个测试,以确保我能够针对域进行身份验证,以便我可以使用 NTLM 身份验证设置 Linux Wiki。我的理论是,如果我可以成功查询 AD 以获取信息,那么我就离让我的 Wiki 针对 AD 进行身份验证更近了一步(我已经在 ActiveDirectory 下设置 moin wiki 的说明)。
问题是我似乎无法ldapsearch
正确进行查询。我在网上看到过很多教程,它们表明-D
应该是这样的-D "Americas\John_Marshall"
;但是,当我使用时,我总是收到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 ~]$
有人能指点一下上面的查询哪里出错了吗ldapsearch
?我们的 AD ldap 服务器是 10.1.1.1,AD 域是“美洲”。
最终解决方案的步骤(实际答案在 Wolfgang 的回复中):
利用评论中的信息和 Wolfgang 的回答,我能够拼凑出解决方案,但效果并不理想……
ldp.exe
对我来说不是很有用;但是,我开始嗅探 Outlook 验证的服务器,并在查询中替换该 IP 地址。突然,我得到了正确的身份验证,并使用运行了查询ldapsearch -x -h <new_ip_addr> -D "Americas\John_Marshall" -W -b "dc=MyCompanyName,dc=com"
。此查询的结果(基本上是我们公司 LDAP 目录的大部分原始数据转储)使我能够优化参数-b
(搜索库)。
答案1
嗯,这可能有几个问题:
您指定了简单身份验证,但未提供密码,也未告诉 ldapsearch 从命令行收集密码。用户 John_Marshall 没有密码吗?如果他有密码,则必须以某种方式提供。指定
-w <passsword>
或-W
(在提示符下输入密码)。用户的 binddn 是真的吗
cn=John_Marshall,dc=Americas
?在我们的 AD 中,仅作为示例,我自己的 binddn 将是“dn: CN=Wolfgang Schulze-Zachau,CN=Users,DC=aminocom,DC=com
”,即名字和姓氏之间没有下划线可以使用“ ”的 binddn
cn=John_Marshall,dc=Americas
,但在我看来有点短。当然,这完全取决于您的 AD 的配置方式。您能否验证这确实是该用户的 DN?当您查看 AD 用户和计算机时,指向该用户的树项的完整列表是什么?如果您不指定过滤器,您将获得搜索库中的所有项目的列表。这可能是一个很长的列表。
OP 编辑:
正确的、有效的咒语是:
[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 ""