Apache認証方法まとめ
参考:http://httpd.apache.org/docs/2.0/ja/howto/auth.html
昔(5/18くらい)Subversionの認証を設定するために、いろいろ調べたことをいまさらながらにまとめておく。
Subversionの認証って言ったけど、結局Apacheの認証機能を使用したのでApache認証方法のまとめになってる。
ここでは、Apacheの認証方法として以下の3つまとめておく。
- Basic認証
- Digest認証
- SSPI認証
Basic認証
Apacheの一般的な認証方法。
設定は簡単だが、ユーザ名とパスワードが平文で送信されるため、セキュリティに問題あり。
設定方法は、
AuthType Basic AuthName "Subversion repository" AuthUserFile C:/Apache2.2/passwords Require valid-user
AuthUserFileは、ユーザ毎にhtpasswdで追加する必要がある。
Digest認証
参考:http://blog.riywo.com/2008/04/01/134909
Basic認証が平文で送信するから、そこを改善した認証方法。
AuthType Digest AuthName "Subversion repository" AuthUserFile C:/Apache2.2/.htdigest Require valid-user
Apache2.0系ではパスワード設定ファイルの指定にAuthUserFileディレクティブじゃなくて、AuthDigestFileディレクティブを使うらしい。
Digest認証の設定ファイルもBasic認証と同じくユーザ毎にhtdigesで作成する必要がある。
SSPI認証
参考1:http://tortoisesvn.net/docs/release/TortoiseSVN_ja/tsvn-serversetup-apache.html#tsvn-serversetup-apache-5
参考2:http://d.hatena.ne.jp/shimonoakio/20080303/1204549526
Subversionの設定ではこの認証方法を使用。
別途、
http://sourceforge.net/projects/mod-auth-sspi
からmod_auth_sspi.soをダウンロードしてmodulesフォルダに置き,httpd.confの
LoadModule auth_basic_module modules/mod_auth_basic.so
と書かれている行より,上に
LoadModule sspi_auth_module modules/mod_auth_sspi.so
を追記する。
設定方法は、
AuthType SSPI AuthName "Subversion repository" SSPIAuth On SSPIAuthoritative Off SSPIDomain <<ドメイン名>> SSPIOfferBasic On SSPIOmitDomain On Require valid-user
これで、ユーザ名とパスワードを一元管理できる。
各ディレクティブの意味を簡単にまとめると
- SSPIAuth:SSPIによる認証を有効にするかどうか
- SSPIAuthoritative:AuthzSVNAccessFileで指定したファイルに書かれているユーザしか認証しない・・・のかな?
- SSPIDomain:ドメイン名
- SSPIOfferBasic:NTLMSSPプロトコルがだめだった場合にBasic認証のプロトコルを使用する・・・ってことなのか?
- SSPIOmitDomain:ユーザ名の前のドメイン名を省略するかどうか
mod_auth_sspiのドキュメントが全然ないから、あってるかどうかかなり怪しい。
#ドメインコントローラの認証使うのはいいけど、httpsじゃないとユーザ名とパスワードがそのまま流れるから危険な気がする。
#と、いまさらながらに思う。
#参考ページにはhttpsじゃないと動かないよって書いてあるけど、某大学のリポジトリはhttpで稼働中。
ほかにも、Apacheの認証方法としてLDAPを使うこともできるらしい。
追記
パケット覗いてみたらFirefoxだとNTLMSSPなんちゃらできちんと暗号化されていた。
ただ、TortoiseSVNだとNTLMSSPで認証できないらしく、Basic認証のプロトコル使ってるよ・・・
おかげで、ユーザ名とパスワードがだだ漏れ。