1. ホーム
  2. http

[解決済み】BASIC認証でWebサイトからユーザーをログアウトさせる方法は?

2022-03-28 03:31:17

質問

Basic認証を使用しているユーザーをWebサイトからログアウトさせることは可能ですか?

一度認証されると、各リクエストにログイン情報が含まれるため、次回同じ認証情報を使用してサイトにアクセスすると、自動的にログインされるからです。

今のところ、ブラウザを閉じるしか解決策はありませんが、ユーザビリティの観点からは受け入れられません。

解決方法は?

ベーシック認証は、ログアウトを管理するようには設計されていません。ログアウトはできますが、完全自動ではありません。

その際、ログインを要求する通常の 401 と同じレルムと同じ URL フォルダレベルで '401 Unauthorized' を送信する必要があります。

次に間違った認証情報、例えば空白のユーザー名とパスワードを入力するように指示し、それに対して「ログアウトに成功しました」というページを送り返すようにする必要があります。間違った/空白の認証情報は、以前の正しい認証情報を上書きすることになります。

要するに、ログアウトスクリプトはログインスクリプトのロジックを反転させ、ユーザーが はありません。 は正しい認証情報を渡す。

問題は、「パスワードを入力しないでください」というやや不思議なパスワードボックスが、ユーザーの受け入れに応えられるかどうかです。パスワードを自動入力しようとするパスワードマネージャーも、ここでは邪魔になる可能性があります。

コメントを受けて追記:再ログインは少し違う問題です(明らかに2段階ログアウト/ログインを要求している場合は別)。再ログインリンクへの最初のアクセスを拒否(401)し、2回目のアクセスを受け入れる必要があります(おそらく異なるユーザー名/パスワードを持っています)。これを行うには、いくつかの方法があります。一つは、ログアウトリンクに現在のユーザ名を含め(例:/relogin?username)、認証情報がそのユーザ名に一致したときに拒否することです。