mod_authn_otp
認証用に Apache HTTPD サーバーとそのモジュールをインストールしました。すべて正常に動作します。
ただし、小さな問題が 1 つあります。ユーザー セッションを「終了」できません。ドキュメントを読んで、これを行う方法を見つけました。mod_authn_otpのドキュメントには次のように書かれています。
ログアウト
HTTP 認証は本質的にステートレスであるため、実際の「ログイン」プロセスはありません。各 HTTP 要求には、独自の認証が必要です。同様に、「ログアウト」プロセスもありません。つまり、ブラウザが「ログイン」することはないため、ユーザーまたはサーバーがユーザーのブラウザの「ログアウト」を強制する方法はありません。mod_authn_otp を使用すると、最大リンガー時間に達したときに「ログアウト」が正確に発生します。
実際には、サーバーがユーザーを「ログアウト」する方法があります。それは、401 Unauthorized HTTP エラー コードを返すことです。これにより、ブラウザは使用していたユーザー名とパスワードのペアを「忘れ」、新しいペアを要求します。ただし、これはスクリプト レベルで (たとえば、PHP スクリプトを介して) 行う必要があります。また、これはそのユーザーのブラウザを「ログアウト」するだけです。最大リンガー タイム内に別のブラウザから同じワンタイム パスワードを使用できた攻撃者は、引き続き侵入することができます。
したがって、次のように HTTP エラーを返す小さな bash スクリプトを作成しました。
#/bin/bash
echo -e 'HTTP/1.0 401 Unauthorized'
echo -e 'WWW-Authenticate: Basic realm=\"mod_authn_otp\"’
ただし、このスクリプトを呼び出すと、認証プロンプトが再度表示され、正しい詳細を入力しても認証に失敗します。また、このスクリプトでは HTTP エラー ページがリダイレクトされません。助けてください。
前もって感謝します!