我想弄清楚如何配置Zend_Auth_Adapter_Ldap
来对我们的ActiveDirectory
进行身份验证。手动验证工作没有问题,但我无法使用Zend_Auth_Adapter_Ldap
使其工作。
这是最简单的方法。 这有效!
ldap_set_option($ldapcon, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldapcon, LDAP_OPT_REFERRALS, 0);
$ldapcon = ldap_connect("ldaps://srv.dom.de", 636);
$bind = ldap_bind($ldapcon, "CN=USERNAME,OU=Benutzer,OU=DOM,DC=dom,DC=de", "PASSWORD");
这是我尝试配置Zend_Auth_Adapter_Ldap
的方法。 这不起作用!
ad.server2.host = srv.dom.de
ad.server2.port = 636
ad.server2.bindRequiresDn = false
ad.server2.baseDn = "OU=Benutzer,OU=DOM,DC=dom,DC=de"
ad.server2.accountFilterFormat = "CN=%s"
ad.server2.useSsl = true
ad.server2.useStartTls = false
;ad.server2.accountDomainName = "dom.de"
;ad.server2.username = "CN=TESTUSER"
;ad.server2.password = "TESTPASS"
我尝试将accountFilterFormat
设置为更像AD的方式,但不会产生任何不同的结果......
ad.server2.accoutnFilterFormat = "(&(objectclass=user)(sAMAccountName=%s)"
目前的debuf输出如下:
Ldap: 1: host=srv.dom.de,port=636,bindRequiresDn=,
baseDn=OU=Benutzer,OU=DOM,DC=dom,DC=de,accountFilterFormat=CN=%s,
useSsl=1,useStartTls=
Ldap: 2: USERNAME authentication failed: 0x31
(Invalid credentials; 80090308: LdapErr: DSID-0C090334,
comment: AcceptSecurityContext error, data 525, vece): USERNAME
我现在尝试了很多东西,尝试调试Zend-Code本身,但我无法理解。如果有人对我需要设置的选项有更多的了解,我会非常,非常好!
答案 0 :(得分:1)
这毕竟只是一个配置问题。仔细阅读文档会产生以下配置:
ad.server2.host = srv.dom.de
ad.server2.port = 636
ad.server2.bindRequiresDn = false
ad.server2.baseDn = "OU=Benutzer,OU=DOM,DC=dom,DC=de"
ad.server2.accountFilterFormat = "CN=%s"
ad.server2.useSsl = true
ad.server2.useStartTls = false
ad.server2.accountCanonicalForm = 3
ad.server2.accountDomainNameShort = "dom"
这就是全部。针对AD的身份验证通过用户名:dom\username
完成,因此accountCanonicalForm
必须设置为3,这是反斜杠样式语法,然后accountDomainNameShort
定义域的部分规范帐户名称。
一旦理解得非常合乎逻辑,但在没有任何知识的情况下搞清楚......好吧,它现在正在运作:)