2

ユーザーを認証するために PHP で LDAP クエリ クラスを作成しました。LDAP サーバーを複数の OU に照会する必要があります。これは例です。

DC=mydomain,DC=com
    OU=MyBusiness
        CN=MyGroup

DC=mydomain,DC=com
    OU=Users
        CN=Domain Users

このドメインには 2 つの OU があり、1 つはグループを持つカスタム OU です。もう 1 つは、標準の Windows OU です。OU=Users 内のグループと OU=MyBusiness 内のグループの両方を取得するためのクエリを作成したいと思いますが、不可能のようです。私はこの接続を試しました:

$r=ldap_connect($ldap_host,$ldap_port);
ldap_bind($r,$user,$passw);
$domain="OU=MyBusiness,DC=mydomain,DC=com";
$sr=ldap_search($r, $domain ,"(&(objectClass=user)(sAMAccountName=".$user."))");

しかし、MyBusinessのグループのみを取得します。これらも試しました:

$domain="OU=Users,DC=mydomain,DC=com"; //gets only the other group
$domain="DC=mydomain,DC=com"; //error
$domain="OU=*,DC=mydomain,DC=com"; //error

しかし、誰も働いていません。どのようにできるのか?

4

1 に答える 1

0

どうぞ - これでうまくいくはずです。(これらの ldap_options は、最上位の「DC=mydomain,DC=com」検索に必要です)

$r=ldap_connect($ldap_host,$ldap_port);
ldap_set_option($r, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($r, LDAP_OPT_REFERRALS, 0);
ldap_bind($r,$user,$passw);
$search = "(&(objectClass=user)(sAMAccountName=$user))";
$attributes = array("cn","displayName","dn");
$sr=ldap_search($r,$domain,$search,$attributes);
$results = ldap_get_entries($r,$sr);
foreach ($results as $result) {
  echo $result['cn'];
}
于 2014-09-08T14:47:00.937 に答える