非服务帐户的AD / LDAP身份验证

时间:2019-12-23 20:32:42

标签: authentication ldap

我正在使用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:

  • 用户名或密码不正确,或者
  • kcarson无权进行验证

还有其他原因可能会导致失败吗?

1 个答案:

答案 0 :(得分:1)

搜索请求需要FDN,或者在使用Microsoft Active Directory时可以使用Ambiguous Name Resolution (ANR)中的一些。因此,您可以使用以下任何一种方式:

  • 全名:CN = Kevin Carson,OU = Phoenix,OU = OutsideTheLines,OU = MyUsers,DC = radical,DC = com
  • userPrincipleName:kcarson@radical.com
  • NetBiosName字符串:(RADICAL \ kcarson)
  • ObjectGuid:{ca2e693f-6280-4589-9376-b3707345d3ad}

因此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祝您节日快乐!