phpでLDAPを使用してAD認証失敗。そのときどうしたか。

こんにちわ。

さて、ここ最近、ハマっていたWindows環境での認証関連。
ここにきて、やっと解決されたので、備忘録を…

【今回起きた問題点】

外部にLDAPサーバーが存在する。
諸々、php上の設定でldap関連のextensionを追加しても、
外部LDAPサーバーに接続、Bindはできるものの、
該当のデータ(例えばメールアドレス等)を取得することができなかった。

——————————————————————–

【条件】

サーバー自体はIIS7、phpを導入。
AD認証でとおっている様子。

【対処】

phpにおけるLDAP接続を諦める。
よって、IISのphpとaspを共存できる環境を作り、
下記のような流れで、認証を行い、
該当のデータを取得することにする。

[aaa.php]
※このPGは単純にbbb.aspをキック。ただし、引数としてWindowsのログオン名を渡す。

↓(1)

[bbb.asp]
※このPGでは、vbsをキックする(BASP21のEXECUTE2メソッドで、cscriptで実行)。
引数のログオン名を渡す。

↓(2)

[ccc.vbs]
※ここではじめて、LDAPサーバーに接続して、
該当データ(ここではメールアドレス)を返す。

↓(3)

bbb.asp
※ccc.vbsの戻り値を元に別ページへリダイレクト。
ここではindex.phpなどのTOPページ。

この方法で実際にできた。

おそらく、(2)のbbb.aspからccc.vbsをキックして
戻り値はどうなるのか?というところがあると思うが、
そこで出てくるのが、BASP21というWindowsServerで使用されるミドルウェア。
このBASP21のメソッドで、EXECUTE2というのがあるのだが、
そこには戻り値を見れるのが大きい。
よって、ccc.vbsでは、単純にメールアドレスのみを表示(戻り値として表示)するように
すればよい。
——————————————————————–

その他、各プログラムに関しては、
検索すれば色々と出てくるので、それらをつなげる方法として、
上記方法を参考にしてもらえたらうれしいです。

ちょっとめんどくさいところもあるが、
このようにすることで、LDAP接続して情報を取得することができます。

ご参考までに。