1

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自体をデバッグしようとして、今はたくさんのことを試しましたが、理解できません。どのオプションを設定する必要があるかについて誰かがもう少し洞察を持っているなら、私はとても、とても素晴らしいです!

4

1 に答える 1

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次に で正規のアカウント名のドメイン部分を定義します。

かつてはかなり論理的に理解されていましたが、知識がなくてもそれを理解する...まあ、今はうまくいっています:)

于 2013-03-08T12:36:47.663 に答える