2009年10月19日月曜日

CentOS 5.3 で統合Windows認証 Bookmark and Share

以前に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 とかでなんとかなると思います。

1 件のコメント:

匿名 さんのコメント...

記事参考にさせていただいています。
さて、CentOS5.6で全く同じように試してみたのですが、Windows統合認証にしたさいにも、ユーザー名とパスワードを求められてしまいます。
klist kvno kinitは問題ないようなので、
どうも、mod_auth_kerbがうまく動いていない気がするのですが、、、