以前にSolarisでやっていたのをCentOS + WindowsServer2008R2 で再構築してみた。
Apacheなどはインストール済みの状態からスタート。
1) WindowsServerでの作業
1. CentOSをDNSに登録する。(双方とも正引き、逆引きができる状態にしておく)
2. ActiveDirectory上で、
ダミーのユーザアカウントを作成する → (1)
ktpassコマンドで、keytabファイルを作成する
ktpass.exe -princ HTTP/centos53.ad.local@AD.LOCAL -crypto rc4-hmac-nt -ptype KRB5_NT_SRV_HST -pass パスワード -out 出力先ファイル名
3. 作成されたファイルを CentOS 上の /etc/httpd/conf/keytab に転送しておく。
2)CentOS(Webサーバ)での作業
1. apacheモジュールをインストール
yum install mod_auth_kerb
2. /etc/httpd/conf.d/auth_kerb.conf を確認し、LoadModule ... が設定済みであることを確認する。
LoadModule auth_kerb_module modules/mod_auth_kerb.so
3. /etc/krb5.conf を編集する。
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = AD.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes
[realms]
AD.LOCAL = {
kdc = ws2008r2.ad.local:88
}
[domain_realm]
.ad.local = AD.LOCAL
ad.local = AD.LOCAL
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
4. /etc/httpd/conf.d/auth_kerb.conf を編集する。
<Location /private>
# SSLRequireSSL
AuthType Kerberos
AuthName "Kerberos Login"
KrbServiceName HTTP/centos53.ad.local
KrbMethodNegotiate Off
KrbMethodK5Passwd On
KrbAuthRealms AD.LOCAL
Krb5KeyTab /etc/httpd/conf/keytab
require valid-user
</Location>
※ここでは、SPNEGOによるSSOではなく、BASIC認証に設定しています。
5. apache を再起動する
service httpd restart
3)動作確認
1. クライアントPCから、Webサーバにアクセスしてみる。
http://centos53.ad.local/private/foge
2. BASIC認証のダイアログが表示されたら、ADに登録されているユーザ・パスワードを入力する。
3. 404 Not Found になれば正常に動作している。
4)統合ウィンドウズ認証に変更する
1. /etc/httpd/conf.d/auth_kerb.conf を編集する。
<Location /private>
.
.
KrbMethodNegotiate On
KrbMethodK5Passwd Off
.
.
</Location>
2. 3)と同様に動作確認する。→認証ダイアログは表示されないので、ADに参加しているクライアントPCで動作確認すること。
補足
■ CentOS側では、REMOTE_USERで認証されたユーザがわかります。
■ 認証失敗したときは、ErrorDocument 401 とかでなんとかなると思います。