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