baba さんの日記で、Apache のアクセス制御について以下のような質問があった。
あるディレクトリ以下に対して、以下のようなアクセス制御を
することは可能でしょうか。
* ある特定の社内サブドメイン(あるいは特定ホスト)は
パスワード認証なし
* それ以外の社内からのアクセスはパスワード認証あり
* それ以外の社外からはアクセス不可
Apache のアクセス制御
Apache のアクセス制御では上記のようなことは単純には出来ないようだ。それは mod_access の仕様によるもので、ユーザー認証と IP 認証の組み合わせの認証は出来るものの、IP 認証の結果によってユーザー認証を変更するといった複雑な認証には対応していないためである。
また、例えば Directory での指定と .htaccess の指定の両方をしたらどうかというのもあるが、こちらも駄目である。これらの指定は順番に評価されるわけではなく、あらかじめマージされて評価されるためで、Apache がマージする順序により認証が上書きされてしまうのだ。
とりあえず簡単な方法
以上のことを踏まえたうえで、とりあえず簡単な方法は以下のとおりであろう。
Alias /baba2 /var/www/baba1
Alias /baba3 /var/www/baba1
<Location /baba1>
order deny,allow
deny from all
</Location>
<Location /baba2>
order deny,allow
deny from all
allow from 218.44.239.78
</Location>
<Location /baba3>
order deny,allow
deny from all
allow from 61.120.65.146
AuthName baba
AuthType Basic
AuthUserFile /home/tnh/.htpasswd
Require user tnh
Satisfy all
</Location>
/var/www/baba1 に実体を置き、http://hostname/baba2 と http://hostname/baba3 でアクセスしてもらおうという作戦である。とりあえずこの設定でうまく動作する。
しかしこの設定だとユーザーに URL 使い分けてもらわないといけないので、使い勝手が悪いだろう。
0 件のコメント:
コメントを投稿