我正在使用Java和JAAS设置应用程序,因此首先要从命令行测试AD / LDAP连接。 LDAP对我来说并不陌生,我以为我理解了它,但是开始重新考虑。服务帐户进行身份验证,而普通员工则不进行身份验证。 :-(
我可以使用用户名“ ldap”的服务帐户进行身份验证,我知道该用户的密码,并返回kcarson帐户的dn和sAMAccountName:
++ ldapsearch -vx -LLL -o ldif-wrap=no \
-H ldap://21.10.10.50:389 \
-b OU=MyUsers,DC=radical,DC=com \
-D ldap \
-W '(samAccountName=kcarson)' samaccountname
Enter LDAP Password:
dn: CN=Kevin Carson,OU=Phoenix,OU=OutsideTheLines,OU=MyUsers,DC=radical,DC=com
sAMAccountName: kcarson
但是,如果我使用用户名“ kcarson”(我知道其密码)执行相同的操作,则会收到失败消息:
++ ldapsearch -vx -LLL -o ldif-wrap=no \
-H ldap://21.10.10.50:389 \
-b OU=MyUsers,DC=radical,DC=com \
-D kcarson \
-W '(samAccountName=kcarson)' samaccountname
Enter LDAP Password:
ldap_bind: Invalid credentials (49)
additional info: 80090308: LdapErr: DSID-0C09042A, comment: AcceptSecurityContext error, data 52e, v3839
我也尝试使用完整dn而不是“ kcarson”,但结果相同。根据{{3}},除非“如果其中任何一个失败……这是登录失败” 。
因此,如果这是登录失败,则AFAIK:
还有其他原因可能会导致失败吗?
答案 0 :(得分:1)
搜索请求需要FDN,或者在使用Microsoft Active Directory时可以使用Ambiguous Name Resolution (ANR)中的一些。因此,您可以使用以下任何一种方式:
因此samAccountName名称不是使用ANR的选项。
所以这样的事情应该起作用:
ldapsearch -vx -LLL -o ldif-wrap=no \
-H ldap://21.10.10.50:389 \
-b OU=MyUsers,DC=radical,DC=com \
-D kcarson@radical.com \
-W \
'(samAccountName=kcarson)' samaccountname
LDAP祝您节日快乐!