我的目标是从命令行测试LDAP身份验证。我尝试使用ldapsearch
。
我正在使用Centos 6.7
即使我使用了正确的凭据,以下命令也会失败
[user@localhost html]# ldapsearch -x -h localhost -p 3389 -b "uid=john.martin,ou=Users,dc=company,dc=com" -W
Enter LDAP Password:
ldap_bind: Invalid credentials (49)
以下命令在没有密码字段的情况下正常工作。
ldapsearch -x -h localhost -p 3389 -b "uid=john.martin,ou=Users,dc=company,dc=com"
在尝试提供密码时是否有任何遗漏?我可以请求帮助来解决问题吗?
已更新
以下是用户帐户的结构
ldapsearch -x -h 127.0.0.1 -p 3389 -b "ou=Users,dc=company,dc=com" -s sub | more
# john.martin, Users, company.com
dn: uid=john.martin,ou=Users,dc=company,dc=com
uid: john.martin
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
objectClass: ldapPublicKey
shadowLastChange: 13306
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 509
homeDirectory: /home/john.martin
mail: john.martin@company.com
gecos: john martin
sshPublicKey:: some key
gidNumber: 87
cn: John Martin
以下是搜索特定cn
ldapsearch -h 127.0.0.1 -p 3389 -x -b "dc=company,dc=com" "(&(objectClass=posixGroup)(cn=member_of_this_group))"
# extended LDIF
#
# LDAPv3
# base <dc=company,dc=com> with scope subtree
# filter: (&(objectClass=posixGroup)(cn=member_of_this_group))
# requesting: ALL
#
# member_of_this_group, groups, company.com
dn: cn=member_of_this_group,ou=groups,dc=company,dc=com
objectClass: posixGroup
objectClass: top
cn: member_of_this_group
description:: some characters bla bla
memberUid: john.martin
memberUid: kyle.miller
memberUid: robert.dangie
memberUid: smith.collins
memberUid: ian.bell
gidNumber: 54787
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
答案 0 :(得分:2)
当您没有提示输入密码时,客户端将执行匿名绑定(这就是为什么您没有在示例中看到错误而没有提示输入密码字段的原因。)
在第一个示例中,请记住-b
参数设置搜索库而不是绑定DN。您需要使用-D
参数(对于绑定DN)。这可能听起来令人困惑,但ldapsearch命令行工具本质上执行LDAP BIND,后跟LDAP SEARCH(因此是两个参数)。