5
  • ダイジェスト認証用のHttpモジュールを作成しました。サーバーでは、ページを要求するたびに、このモジュールは「認証」ヘッダーの存在を確認します。このヘッダーが存在しない場合、ユーザーは401メッセージを受け取ります。
  • クライアント側では、ダイジェスト認証にjQueryプラグインを使用しています。

知っておくと、私には流れるような機能があります。

  1. ユーザーは、2つの入力フィールドにユーザー名とパスワードを入力します(ブラウザーのHttp認証プロンプトではありません)。
  2. jQueryを使用して、サーバー上の保護されたページにajax呼び出しを行っています。このajax呼び出しは、DigestHttpプロトコルに基づいています。つまり、username、noncecount、clientnonce、MD5ハッシュパスワードなどを使用して認証ヘッダーを追加しているということです。
  3. 次に、200メッセージのサーバー応答:)

ユーザーが別のページに移動すると、そのリクエストに認証ヘッダーがないため、「401アクセスが拒否されました」というメッセージが表示されます。そしてそれが問題です。

  • 標準のダイジェストプロトコルを使用する場合、ブラウザはすべてのリクエストに認証ヘッダーを自動的に追加しますが、この問題は発生しません。ただし、ブラウザの[Http認証]ダイアログでユーザーが自分の資格情報を入力する必要がないため、この方法で使用しています。カスタムダイアログが必要です。jQuery DigestJプラグインでは、ヘッダーは「authorization」ではなく「authenticate」と呼ばれ、プロトコルはDigestではなくDigestJと呼ばれます。そうすれば、サーバーが401メッセージで応答したときに、資格情報を入力するためのブラウザーのHttpダイアログが表示されません。フォーム認証は使用できません。
  • jQueryセッションプラグインを使用してクライアント側にユーザ​​ークレデンシャルを保存できますが、リクエストごとにHttpヘッダーを変更するにはどうすればよいですか?'authenticate'ヘッダーを追加し、セッションから資格情報を挿入する必要があります。
4

1 に答える 1