apache+webdavの設定例
apacheのmod_webdavでの設定例を探すと、apacheの公式マニュアルにこんな例があります。
DavLockDB /usr/local/apache2/var/DavLock <Directory /usr/local/apache2/htdocs/foo> Require all granted Dav On AuthType Basic AuthName DAV AuthUserFile user.passwd <LimitExcept GET POST OPTIONS> Require user admin </LimitExcept> </Directory>
ところがですよ。この例の通りに設定すると、認証を通らなくてもなんでもできちゃう。つまり上の方にあるRequre all grantedが /usr/local/apache2/htdocs/foo 以下に対して有効になって、下の方にあるLimitExceptが効かない。PUTもDELETEも認証なしでできる。
以下の設定例で期待通りの動作、WebDAV関連のメソッドに対しては認証を求め、それ以外GET,OPTIONSは認証なしで利用できる、が実現できます。公式マニュアルが間違っているとは思えないので、何らかの理由でRequireのスコープが変わっているのかもしれません。
DavLockDB /usr/local/apache2/var/DavLock <Directory /usr/local/apache2/htdocs/foo> Require valid-user Dav On AuthType Basic AuthName DAV AuthUserFile user.passwd <Limit GET OPTIONS> Require all granted </Limit> </Directory>
6月16日追記
そうか、Orderだな。Orderが違うそうなるかも。