こんにちわ。
さて、ここ最近、ハマっていた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接続して情報を取得することができます。
ご参考までに。