IPアドレス制限とユーザー認証の組み合わせ

広告

「Allow」や「Deny」を使ってIPアドレスやドメインによる制限を設定する方法と、ユーザー名とパスワードを使ったユーザー認証を行う方法がありますが、1つのディレクトリに対して両方を記述することが出来ます。

<Directory "D:/Apache Group/Apache2.2/htdocs/staffonly">
    Order allow,deny
    Allow from all
    Deny from 192.168.1.0/24

    AuthType Basic
    AuthName "ユーザー名とパスワードを入力して下さい"
    AuthUserFile "D:/Apache Group/passfile/passwd"
    Require valid-user
</Directory>

このように両方の方式でアクセス制限が設定されていた場合、デフォルトでは両方の条件を満たした場合だけアクセスが許可されます。つまりIPアドレスも指定のアドレスからのアクセスであり、しかもユーザー認証が通った場合と言うことです。

Apacheではどちらかだけの条件が通ればアクセスを許可する設定にすることも可能です。つまりIPアドレスが条件にあっていれば無条件でアクセスを許可し、IPアドレスが指定以外からの場合にはユーザー認証ダイアログを表示すると言った方法です。社内からは自由に見えれるが、外出先から見る場合はアクセス認証が必要と言った利用方法が考えられます。

設定するには「Satisfy」に対して「any」を設定します。

Satisfy any

ちなみに「Satisfy」に「All」を設定すると、特に何も記述しなかった場合と同じく両方の条件が満たされた場合だけアクセスが許可されます。

Satisfy all

実際には次のように記述します。

<Directory "D:/Apache Group/Apache2.2/htdocs/staffonly">
    Order allow,deny
    Allow from all
    Deny from 192.168.1.0/24

    AuthType Basic
    AuthName "ユーザー名とパスワードを入力して下さい"
    AuthUserFile "D:/Apache Group/passfile/passwd"
    Require valid-user

    Satisfy any
</Directory>

( Written by Tatsuo Ikura )