まず、Apacheを動かすWindowsサーバをADのドメインに参加させます。僕は、ドメインに参加済みのマシンをもらったので、どうやって参加させるか知りません。きっとWindowsなので簡単なんだと信じています。
モジュールのインストール
Linuxではmod_auth_ntlm_winbindを使いましたが、Windowsではmod_auth_sspiを使います。これ、Apache2.2用のモジュールでそれ以外のバージョンだと、自前でビルドしないといけないかも。最新版をダウンロードして展開します。
展開したファイルのINSTALLを読めばわかりますが、binディレクトリにあるファイルをApacheをインストールしたディレクトリのmodulesにコピーします。
Apacheの設定ファイル
次にApacheの設定ファイルを変更します。今回もバックエンドのTomcatに接続することを前提にします。まずは、モジュールをロードします。
LoadModule sspi_auth_module modules/mod_auth_sspi.so
そして、/hogeへのアクセスで認証されるようにします。
<Location /hoge >
ProxyPass ajp://localhost:8009/hoge status=I
ProxyPassReverse ajp://localhost:8009/hoge
AuthName "Windows NTLM Authentication Test"
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
SSPIOmitDomain On
require valid-user
</Location>
SSPIOmitDomainをOnにすると、Tomcatからはrequest.getRemoteUser()でユーザIDだけが取得できます。Off(デフォルト)だと、ドメイン名\\ユーザIDの形式でTomcatから認証ユーザの情報が取得できます。Linuxのmod_auth_ntlm_winbindと合わせるためにSSPIOmitDomainをOnにしています。
Tomcatの設定
Linuxと同じようにTomcatのserver.xmlのコネクターの設定でtomcatAuthenticationをfalseに設定します。
<connector port="8009" protocol="AJP/1.3" redirectport="8443" tomcatAuthentication="false">これで、Tomcatからはrequest.getRemoteUser()でApacheが認証したユーザの情報が取得できます。
終わりに
Linuxと違ってWindowsは簡単ですね。ちなみに、mod_auth_sspiの設定の中にはSSPIMSIE3Hackとかあって、IE3って…。