BASIC認証の設定のAuthNameとRequire
関連記事:.htaccessでBASIC認証
AuthName
以前のBASIC認証についての記事でBASIC認証の設定のAuthNameディレクティブについて
IDとパスワードを入れる画面で表示されるメッセージだと思えばよい。
などと書いたが、あれは間違い。単なるメッセージではない。
AuthNameは認証領域(authentication realm)を表す。
Apacheのドキュメントには以下のように説明されている。
例えば、"Restricted Files" 領域中で 一度認証されれば、同一サーバ上で "Restricted Files" Realm としてマークされたどんな領域でも、クライアントは 自動的に同じパスワードを使おうと試みます。 このおかげで、複数の制限領域に同じ realm を共有させて、 ユーザがパスワードを何度も要求される事態を 防ぐことができます。もちろん、セキュリティ上の理由から、 サーバのホスト名が変わればいつでも必ず、 クライアントは再びパスワードを尋ねる必要があります。
例1:
/var/www の下に test1,test2,test3 の3つのディレクトリがあり、それぞれ .htaccess でBASIC認証がされている。test1/.htaccess と test2/.htaccess の AuthName は "auth1"、test3/.htaccess のAuthName が "auth2" 。この場合、以下のような動きになる。
1.test1 のコンテンツにアクセスしようとするとBASIC認証のダイアログは出る。ユーザID/パスワードを入力して認証を通るとコンテンツにアクセスできる。
2.test2 のコンテンツにアクセスしようとすると、すでに1.でAuthName="auth1" の認証を通っているのでBASIC認証のダイアログは出ない。
3.test3 のコンテンツにアクセスしようとすると、ここのAuthNameはtest1,test2 のAuthNameとは異なるのでBASIC認証のダイアログは出る。
例2:
/var/www/test ディレクトリがあり、その下に sub ディレクトリがある。それぞれ .htaccess でBASIC認証の設定をしている。test/.htaccess のAuthName は "auth"、test/sub/.htaccess のAuthNameは "auth sub"。
この場合、test でBASIC認証を通った後に、sub では AuthName が違うのでまたBASIC認証のダイアログが出るものと思っていたが、実際は sub のコンテンツにアクセスする際にBASIC認証のダイアログは出ない。
これは、.htaccess はサブディレクトリにも影響が及ぶので test で認証を通ればそのサブディレクトリもすべてアクセスでき、サブディレクトリで異なる AuthName のBASIC認証を設定しても意味はないってこと?
Require
BASIC認証の設定のRequireディレクティブは、"Require valid-user" と書いておけばパスワードファイルに記載されたユーザがすべてそのディレクトリ以下にアクセスできる。しかし、
Require user <ユーザID1> [ <ユーザID2>...]
のように許可するユーザを個々に指定してもよい。このように書くと、パスワードファイルに記載されたユーザでも、Require で許可されていなければアクセスが認められない。
例3:
/var/www/test ディレクトリがあり、その下に sub ディレクトリがある。test の .htaccess でBASIC認証の設定をしている。test/.htaccess の Require は "Require valid-user" となっている。パスワードファイルには "user1" と "admin" の2つのユーザが記載されている。
sub ディレクトリの .htaccess には以下の1行のみ。
Require user admin
この場合、 test ディレクトリにおいて "user1" で認証を通った場合、続けて sub ディレクトリのコンテンツにアクセスしようとするとBASIC認証のダイアログが出る。そこでは "user1" ではアクセスできず、"admin" でなければアクセスできない。
一方、test ディレクトリにおいて "admin" で認証を通った場合、subディレクトリであらためてユーザID/パスワードを入力する必要はない。
参考ページ:
認証、承認、アクセス制御 - Apache HTTP サーバ バージョン 2.4
BUKURO-JIN | Basic認証の認証領域 ~AuthName はただのテキストに非ず~
Basic認証の設定 - tkkochanの日記
« PHPメモ041:パスワードのSalt付きハッシュ値 | Main | bashのシェルスクリプト »
「Linux」カテゴリの記事
- CakePHPのインストール(2015.06.14)
- PHPからPDOでPostgreSQLに接続する(2015.06.09)
- Laravel4のインストール(2015.05.06)
- URLリライトの復習その2(2015.04.07)
- composerのインストール(2015.04.01)
The comments to this entry are closed.
Comments