Apache認証方法まとめ

参考:http://httpd.apache.org/docs/2.0/ja/howto/auth.html


昔(5/18くらい)Subversionの認証を設定するために、いろいろ調べたことをいまさらながらにまとめておく。

Subversionの認証って言ったけど、結局Apacheの認証機能を使用したのでApache認証方法のまとめになってる。

ここでは、Apacheの認証方法として以下の3つまとめておく。


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の設定ではこの認証方法を使用。


Windowsドメインコントローラを使用して認証を行う。


別途、
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認証プロトコル使ってるよ・・・
おかげで、ユーザ名とパスワードがだだ漏れ。