2013-03-08 3 views
1

Я пытаюсь выяснить, как настроить Zend_Auth_Adapter_Ldap для аутентификации меня против нашего ActiveDirectory. Вручную аутентификация работает без проблем, но я просто не могу заставить ее работать, используя Zend_Auth_Adapter_Ldap.Zend_Auth_Adpter_Ldap в Active Directory - Проблемы с конфигурацией

Это минимальный минимальный путь. Это работает!

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 ищет способ, как follwing, но это не дает никакой другой результат ...

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, но я просто не могу понять это. Если у кого-то есть более глубокое понимание того, какие параметры мне нужно установить, я буду очень, очень благодарен!

ответ

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 выполняется через Username: dom\username, поэтому accountCanonicalForm должно быть установлено равным 3, что является синтаксисом стиля обратной косой черты, а затем accountDomainNameShort определяет доменную часть имени канонической учетной записи.

После того как вы поняли довольно логично, но поняли, что без каких-либо знаний ... ну, теперь он работает :)

Смежные вопросы