0

LDAPを介して内部サーバー上のActiveDirectoryに対して認証しようとしている外部Webサーバーがあります。同じコードを使用して(ホストとポートを切り替える)外部で認証することはできませんが、ローカルで接続して認証することはできます。Attask(http://www.attask.com/)など、接続および認証が可能な他のサービスがあります。

外部サーバーは現在、LDAPサポートが有効になっているPHP5.3.15を実行しているMediaTemple上のLinux(gs)です。

内部サーバーは現在、LDAPとActiveDirectoryを備えたWindowsServer2008ボックスです。

以下のコードは、私が使用している現在のPHPで、ローカルに接続できましたが、外部サーバーで問題が発生しています。基本的にPHPLDAP接続文字列を使用し、バインドを試みます。失敗すると、匿名でバインドしようとします。どちらも外部で機能しておらず、エラーを返します:LDAPサーバーに接続できません。

<?php
$username = 'username';
$password = 'password';

$ldapconfig['host'] = '00.000.000.000';
$ldapconfig['port'] = '636';
$ldapconfig['basedn'] = 'dc=client,dc=eqc,dc=local';

$ds=ldap_connect($ldapconfig['host'], $ldapconfig['port']);

ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
ldap_set_option($ds, LDAP_OPT_NETWORK_TIMEOUT, 10);

$dn="".$username."";

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

  echo("Unable to bind to server.</br>");

  echo("msg:'".ldap_error($ds)."'</br>".ldap_errno($ds)."");

  if ($bind=ldap_bind($ds)) {

    $filter = "(cn=*)";

    if (!($search=@ldap_search($ds, $ldapconfig['basedn'], $filter))) {
      echo("Unable to search ldap server<br>");
      echo("msg:'".ldap_error($ds)."'</br>");
    } else {
      $number_returned = ldap_count_entries($ds,$search);
      $info = ldap_get_entries($ds, $search);
      echo "The number of entries returned is ". $number_returned."<p>";
      for ($i=0; $i<$info["count"]; $i++) {
        var_dump($info[$i]);
      }
    }
  } else {
    echo("Unable to bind anonymously<br>");
    echo("msg:".ldap_error($ds)."<br>");
  }
}
?>

いくつかの注意:

  • 外部LDAPサーバーはLDAPSを使用しているため、推奨されるホストはポート636のldaps://00.000.000.000です。

  • 'username'と'username@00.000.000.000'でバインドしてみました

  • ファイアウォールがありますが、外部サーバーは内部LDAPサーバーに正常にpingを実行できるため、そのレベルで接続が行われます。

どんな助けでも大歓迎です。サーバー設定またはその性質のものがある場合は、知りたいです。また、ADFSをチェックアウトしましたが、テストするための簡単なスクリプトを見つけることができませんでした。それが機能しなかった場合、終わりのない時間を費やすことはありませんでした。

4

2 に答える 2

1

LinuxボックスからLDAPSを使用してADに接続する場合、常に行を追加する必要がありました

TLS_REQCERT never

/etc/ldap.confまたは同等のもの(apacheの再起動が必要な場合があります-わからない)。ホストに対して「ldaps://server.domain.tld:636」の形式を試すこともできますが、それは問題ではないと思います。

http://en.gentoo-wiki.com/wiki/Active_Directory_Authentication_using_LDAPでいくつかのまともなドキュメントを見つけましたが、現時点ではダウンしているようです。Googleのキャッシュバージョン:http ://webcache.googleusercontent.com/search?q = cache:http://en.gentoo-wiki.com/wiki/Active_Directory_Authentication_using_LDAP

于 2013-01-09T09:37:28.663 に答える
0

SSL証明書エラーかどうかを確認しましたか?自己署名証明書を使用していますか、それとも公式証明書を使用していますか?

「SSL(例:ldaps)を使用していて、ldap_bindが「サーバーにバインドできません:」エラーをスローしている場合は、ldap_connectで使用されているホスト名がLDAPサーバーのSSL証明書の「CN」と一致することを確認してください」 ソース

于 2013-01-08T22:25:33.583 に答える