2012-02-10 16 views
4

私はphp-ldapでLDAPに接続しようとしています。PHP LDAP接続

警告:はldap_bind():サーバーにバインドすることができません:私はこのメッセージを取得

$username = 'josue.ruiz'; 
$password = 'pass'; 
$ldapconfig['host'] = '10.10.10.11'; 
$ldapconfig['port'] = 389; 
$ldapconfig['basedn'] = 'dc=domain,dc=com'; 

$ds=ldap_connect($ldapconfig['host'], $ldapconfig['port']); 
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); 
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0); 

$dn="cn=".$username.",ou=Technology,".$ldapconfig['basedn']; 

if ($bind=ldap_bind($ds, $dn, $password)) { 
    echo("Login correct"); 
} else { 
    echo("Login incorrect"); 
} 

:私はldap_bind()を使用して問題を得たに...無効な資格情報を

しかし、この方法で試してみると:

ldap_bind($ds,'[email protected]','pass'); 

それはうまく動作しますが、私にはわかりませんork私はOUでフィルタリングしたいので、この方法ではできません。誰もがこの問題のアドバイスを持っていますか?

+1

チェックアウトadLDAPためのコード - http://adldap.sourceforge.net/ - そのクラスの相互作用をPHPを介してActive Directoryを使用してさまざまな方法で使用できます。 – Crontab

答えて

5

ldap_bindを実行しようとしているときは、認証情報が有効かどうかを確認して接続するだけです。あなたがしなければならないことは、あなたのドメインをユーザー名に追加し、それを接続させることです。その後、ユーザーがldap_search()と「技術」OUはこのようにそれをやって考えてみましょうかどうかを判断する場合:

$domain = 'mydomain.com'; 
$username = 'josue.ruiz'; 
$password = 'pass'; 
$ldapconfig['host'] = '10.10.10.11'; 
$ldapconfig['port'] = 389; 
$ldapconfig['basedn'] = 'dc=domain,dc=com'; 

$ds=ldap_connect($ldapconfig['host'], $ldapconfig['port']); 
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); 
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0); 

$dn="ou=Technology,".$ldapconfig['basedn']; 
$bind=ldap_bind($ds, $username .'@' .$domain, $password); 
$isITuser = ldap_search($bind,$dn,'(&(objectClass=User)(sAMAccountName=' . $username. '))'); 
if ($isITuser) { 
    echo("Login correct"); 
} else { 
    echo("Login incorrect"); 
} 
+0

alexに感謝しますが、$ dn = "cn ="。$ username。 "、ou = Technology"と入力した場合、$ ldapconfig ['basedn'];それはうまくいきませんが、$ dn = $ ldapconfig ['basedn'];それは仕事ですが、データをフィルタリングしません: '( – JERC

+0

CNを取り出してみてください。sAMAccountで既にフィルタリングしています。OUとDCパスをチェックしたい場所に含めてください。 – AlexC

+0

@ user1197802、CNが付いていない運があればいいですか? – AlexC