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 を編集する。
  1. [logging]  
  2.  default = FILE:/var/log/krb5libs.log  
  3.  kdc = FILE:/var/log/krb5kdc.log  
  4.  admin_server = FILE:/var/log/kadmind.log  
  5.   
  6. [libdefaults]  
  7.  default_realm = AD.LOCAL  
  8.  dns_lookup_realm = false  
  9.  dns_lookup_kdc = false  
  10.  ticket_lifetime = 24h  
  11.  forwardable = yes  
  12.   
  13. [realms]  
  14.  AD.LOCAL = {  
  15.   kdc = ws2008r2.ad.local:88  
  16.  }  
  17.   
  18. [domain_realm]  
  19.  .ad.local = AD.LOCAL  
  20.  ad.local = AD.LOCAL  
  21.   
  22. [appdefaults]  
  23.  pam = {  
  24.    debug = false  
  25.    ticket_lifetime = 36000  
  26.    renew_lifetime = 36000  
  27.    forwardable = true  
  28.    krb4_convert = false  
  29.  }  

4. /etc/httpd/conf.d/auth_kerb.conf を編集する。
  1. <Location /private>  
  2. #  SSLRequireSSL  
  3.   AuthType Kerberos  
  4.   AuthName "Kerberos Login"  
  5.   KrbServiceName HTTP/centos53.ad.local  
  6.   KrbMethodNegotiate Off  
  7.   KrbMethodK5Passwd On  
  8.   KrbAuthRealms AD.LOCAL  
  9.   Krb5KeyTab /etc/httpd/conf/keytab  
  10.   require valid-user  
  11. </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 を編集する。
  1. <Location /private>  
  2.   .  
  3.   .  
  4.   KrbMethodNegotiate On  
  5.   KrbMethodK5Passwd Off  
  6.   .  
  7.   .  
  8. </Location>  

2. 3)と同様に動作確認する。→認証ダイアログは表示されないので、ADに参加しているクライアントPCで動作確認すること。

補足


■ CentOS側では、REMOTE_USERで認証されたユーザがわかります。
■ 認証失敗したときは、ErrorDocument 401 とかでなんとかなると思います。

1 件のコメント:

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

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