ldap/AD 代理:无法使用 sAMAccountName 进行绑定,但姓氏和名字可以绑定

ldap/AD 代理:无法使用 sAMAccountName 进行绑定,但姓氏和名字可以绑定

我正在尝试使用 Debian Wheezy 上的 ldap 设置到 Active Directory 的直通代理。slapd.conf 文件如下。我可以使用姓氏、名字来绑定查找:

ldapsearch -x -h localhost -b "OU=Site-Users,DC=mycompany,DC=local" -D "cn=LaCroix\, Jay,OU=My Group,OU=Site-Users,DC=mycompany,DC=local" -W "(sAMAccountName=jlacroix)" cn sAMAccountName

这确实有效:

result: 0 Success

但我们真正想要做的是通过用户名(sAMAccountName)进行绑定:

ldapsearch -x -h localhost -b "OU=Site-Users,DC=mycompany,DC=local" -D "cn=jlacroix,OU=My Group,OU=Site-Users,DC=mycompany,DC=local" -W "(sAMAccountName=jlacroix)" cn sAMAccountName

但这是行不通的:

ldap_bind: Invalid credentials (49)
additional info: 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1

注意:尽管存在该错误,但我的凭据是正确的,如第一个示例所示,其中绑定通过姓氏、名字进行。

我已经搜索示例数周了,但无论我怎么尝试,似乎都无法绑定 sAMAccountName,只能绑定姓氏和名字。

直接针对 AD 搜索时我可以搜索 sAMAccountName,但使用 ldap 代理时则不能。

这是我的 /etc/ldap/slapd.conf:

# Import our schema
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/samaccountname.schema

moduleload      back_ldap
moduleload      back_bdb.la
moduleload      rwm 

# Support both LDAPv2 and LDAPv3
allow           bind_v2

pidfile         /var/run/slapd/slapd.pid
argsfile        /var/run/slapd/slapd.args

loglevel        1   

# Our slapd-ldap back end to connect to AD

database        ldap
suffix          ou=Site-Users,dc=mycompany,dc=local
subordinate
rebind-as-user  yes 
uri             ldap://10.10.10.99:389
chase-referrals yes 
readonly        yes 
#protocol-version       3   

overlay         rwm 
rwm-map         attribute       uid     sAMAccountName
rwm-map         attribute       mail    proxyAddresses 

binddn cn=ADreader 
bindpw supersecretpassword

# Our primary back end 

database        bdb 
suffix          dc=mycompany,dc=local
rootdn          cn=admin,dc=mycompany,dc=local
rootpw          supersecretpassword 
directory       /var/lib/ldap

# Indexes for this back end 
index           objectClass                     eq,pres
index           ou,cn,mail,surname,givenname    eq,pres,sub
index           uid                             eq,pres,sub

答案1

您的“它有效”示例有效,因为对象的 DN 是cn=LaCroix\, Jay,OU=My Group,OU=Site-Users,DC=mycompany,DC=local。第二个不起作用,因为对象的 DN 不是cn=jlacroix,OU=My Group,OU=Site-Users,DC=mycompany,DC=local

这并不是说您要绑定“姓氏,名字”,而是将对象的 CN 设置为“姓氏,名字”,然后您要绑定对象的 CN。您不能只将作为sAMAccountNameCN 输入并期望它能正常工作。对象的 CN 就是对象的 CN。

使用绑定 DN“DOMAIN\sAMAccountName”直接绑定到 AD 可以正常工作。但我认为 OpenLDAP 不会处理这种情况。它可能会拒绝该语法,尽管从 Active Directory 的角度来看,它可以正常工作。

相关内容