My Photo

« PHPメモ041:パスワードのSalt付きハッシュ値 | Main | bashのシェルスクリプト »

August 26, 2014

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」カテゴリの記事

Comments

The comments to this entry are closed.

TrackBack


Listed below are links to weblogs that reference BASIC認証の設定のAuthNameとRequire:

« PHPメモ041:パスワードのSalt付きハッシュ値 | Main | bashのシェルスクリプト »

June 2021
Sun Mon Tue Wed Thu Fri Sat
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof