Apache2.2 系にsspi認証+AuthzSVNAccessFileしたらうまく動かない・・;;

会社で使ってるWindowsサーバのApacheのバージョンを2.0から2.2にあげてみました。一応回りの人にSVNリポジトリ提供したりしてたりするサーバなので、これまで動いていた「SSPI認証+BASIC認証併用のパス制御つきSVNリポジトリ」の設定をそのまま移行しようとおもいました。

そしたら、うまく動かない・・;;なぜだぁぁ;; よくわからん。2.0のときは動いていたのに・・そろそろ帰らんと明日の朝つらいからかえるけど、くやしいぃ;;

とりあえず、まわりのひとは実質SSPI認証しか使っていないので、BASIC認証は動かなくてもおっけーとし、また、Authz(認可/承認)の部分も、実質細かく制御していたわけじゃないので、一律Required valid-userにしておいて、とりあえずごまかし終了。

でも、2.0->2.2にしたらサービスレベル下がったんじゃしょうがないので、明日以降引き続き調査かな・・少なくとも、AuthAuthoritative ディレクティブを知らんといわれたので、とりあえずコメントアウトしたりしてるのが悪さしてる可能性はある。。

っていうか、SSPI認証って、ドキュメント少なすぎ・・っていうか、プロジェクトとして、風前の灯感漂わせすぎ;; 結構便利で素敵なモジュールなのに・・

(3/10 追記) Apache 2.2でSSPI認証+BASIC認証併用はできた!

Apache 2.2でSSPI認証+BASIC認証併用はできました。まずかったポイントは、モジュールを読む順序

LoadModule sspi_auth_module modules/mod_auth_sspi.so

LoadModule auth_basic_module modules/mod_auth_basic.so

より前に書かないとダメ。ちゃんと動いてくれない。


具体的には、ベーシック認証のユーザで認証したいときでも、常にSSPI側に問い合わせに行ってしまって認証失敗となるという挙動になった。

LocationやらDirectoryやらhtaccessやらの側の設定は、以下のようにすればOK

<Location /svn/>
	DAV svn
	SVNListParentPath on
	SVNParentPath "D:/svn/repos"

	AuthName "SVN Repository"

	# NT Domain Logins
	AuthType SSPI
	SSPIAuth On
	SSPIAuthoritative Off
	SSPIDomain SOFT
	SSPIOfferBasic On
	#SSPIUsernameCase lower
	#SSPIOmitDomain On

	# Htpasswd Logins
	AuthType Basic
	AuthBasicAuthoritative Off
	AuthUserFile "conf/.htpasswd"

	Require valid-user

	Order deny,allow
	Allow from all

	AuthzSVNAccessFile "conf/svnaccess.conf"
</Location>

2.0のときは、AuthAuthoritativeと書いていたところが、2.2ではAuthBasicAuthoritativeになったりするので注意ですね。

あと、SVNのアクセス制限のところは、特に問題なかったっぽい。

	AuthzSVNAccessFile "conf/svnaccess.conf"

とかいて、svnaccess.confという名前の以下のようなファイルを用意すればおっけー

[groups]
admin = shimono, admin
dev = sato, suzuki, tanaka, yamada
clients = kato, yamamoto
guests = demo, project-a

# Default access rule for ALL repositories
# admin can r/w all
[/]
@admin = rw

# Project A
[project-a:/]
@dev = rw
@clients = r
@guests = r

# Project B
[project-b:/]
@clients = rw
someid = r