認証の実行

広告

認証が必要なページにアクセスしようとした場合に、サーバ側は「Authorization」と言うヘッダーがブラウザからのリクエストに付いているかどうかを確認します。最初にアクセスした時には「Authorization」ヘッダーがありませんのでブラウザに対して認証が必要であることを通知します。

通知を受けたブラウザは認証ダイアログを表示し、入力されたユーザー名とパスワードを元に「Authorization」ヘッダーを作成し、改めてWebサーバに対して「Authorization」ヘッダー付きのリクエストを送ります。

サーバ側では送られてきた「Authorization」ヘッダーを元に認証を行い、認証が通ればページを表示させ、認証が通らなければブラウザ側に再度認証が必要であることを通知します。つまり認証ダイアログはサーバが表示しているわけではなく、サーバから連絡を受けたブラウザが「Authorization」ヘッダーを作成するために表示させています。

それでは実際に認証ダイアログに対して登録したユーザー名とパスワードを入力してみます。「http://localhost/staffonly/staff.html」にアクセスします。(認証の設定については『ベーシック認証を設定する(AuthType)』を参照して下さい)。

認証の実行

認証用ダイアログが開きますので、パスワードファイルに登録されているユーザーとパスワードを入力します。入力された値がパスワードファイルに登録されたユーザー名とパスワードであれば認証が通ってページが表示されます。

認証の実行

ブラウザは他の認証が必要なページに対するリクエストをサーバへ送る場合も、「AuthName」が同じだった場合にはブラウザが閉じられるまでは同じ「Authorization」ヘッダーを付けてWebサーバへリクエストを出すようになります。

その為、同じ領域名が設定されている認証が必要なページを見に行った場合、最初から「Authorization」ヘッダーがついていて、しかもそれで認証が通りますので、一度認証が通れば同じ認証をしている他のページを改めて認証すること無しに見ることが出来ます。

認証の実行

上記は最初に認証が通ったページと同じディレクトリにある他のページです。こちらのページも同じディレクトリにあるため認証が必要ですが、既に認証が通る「Authorization」ヘッダーが付いた状態でリクエストが送られてくるため認証は別途行われません。

認証に失敗した場合

認証用ダイアログが開いてユーザーとパスワードを入力した場合でも、入力が間違っていたり入力された値がパスワードファイルに登録されていなかったりした場合には、サーバ側からブラウザへ再度認証が必要であることを連絡します。これは最初に「Authorization」ヘッダーが無い場合と同じ動作です。その為、再度認証ダイアログをブラウザは開き新しい「Authorization」ヘッダーを付けてサーバへリクエストを出そうとします。

認証に成功するまで繰り返し同じことが行われますが、最終的に認証をあきらめダイアログ上の「キャンセル」ボタンをクリックするとブラウザは認証が必要だと言うエラーメッセージを表示し、Webサーバへのページの取得のためのリクエストを送るのを諦めます。

認証の実行

Apache入門の他の記事を見てみる

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)