Apache | アクセス権限 | 認証の実行
認証の実行
認証が必要なページへアクセスしようとすると、サーバー側はブラウザのリクエストにAuthorizationというヘッダーが含まれているか確認する。初回アクセス時にはAuthorizationヘッダーがないため、ブラウザに認証が必要であることを通知する。
通知を受けたブラウザは認証ダイアログを表示し、入力されたユーザー名とパスワードからAuthorizationヘッダーを作成し、再度WebサーバーへAuthorizationヘッダーを含めたリクエストを送信する。
サーバー側では送られてきたAuthorizationヘッダーを認証し、認証を通過すればページを表示し、通過しなければブラウザ側へ再び認証が必要であることを通知する。つまり、認証ダイアログはサーバーが表示しているのではなく、サーバーから通知を受けたブラウザがAuthorizationヘッダーを生成するために表示している。
では実際に、認証ダイアログに登録したユーザー名とパスワードを入力してみる。http://localhost/admin/admin.htmlにアクセスする。認証設定については「基本認証の設定(AuthType)」を参照する。

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

ブラウザは、他の認証が必要なページへのリクエストをサーバーへ送る場合でも、AuthNameが同じであれば、ブラウザが閉じられるまで同じAuthorizationヘッダーでWebサーバーへリクエストする。
そのため、同じ領域名が設定されていて認証が必要なページへ移動した場合、最初からAuthorizationヘッダーが含まれており、その認証が通過する。一度認証が通過すれば、同じ認証が必要な別ページでは再認証されないことを確認できる。

上のページは、先に認証を通過したページと同じディレクトリにある別ページである。このページも同じディレクトリに対する認証が必要だが、すでに認証を通過してAuthorizationヘッダーが含まれているため、再度認証は行われない。
認証に失敗した場合
認証ダイアログが開いてユーザー名とパスワードを入力したとき、入力が間違っていたり、入力された値がパスワードファイルに登録されていなかったりする場合、サーバー側からブラウザへ再び認証が必要であることを通知する。これは最初にAuthorizationヘッダーがなかったときと同じ動作である。そのため、ブラウザは再び認証ダイアログを開き、新しいAuthorizationヘッダーを含めてサーバーへリクエストしようとする。
認証に成功するまで繰り返されるが、最終的に認証を諦めてダイアログの「キャンセル」ボタンをクリックすると、ブラウザは認証が必要であるというエラーメッセージを表示し、Webサーバーへのページ参照リクエストを停止する。
