2011-02-09 27 views
1

ダイジェスト認証は、チャレンジ/レスポンスメカニズムの風味に似ています:theresは、クライアントとサーバーの両方でパスワード(MD5など)と混在し、そのようなミキシングの結果のみがネットワーク経由で送信されるランダムな文字列です。クライアントはダイジェストHTTP認証でチャレンジ(nonce)を選択できますか?

通常、チャレンジ(nonce)はサーバーによって選択され、クライアントに送信されます。 Wikipedia articleダイジェスト認証では、サンプルの「セッション」がリストされます。チャレンジ(「ノンス」)は、そこのサーバーによって選択されます。私は私のマシン上のIISで同じことをテストしました - もう一度、挑戦はIISによって生成されます。

like this oneいくつかの投稿では、クライアントがチャレンジを生成します。クライアントはランダムな文字列を生成し、チャレンジとパスワードとそのチャレンジの結果を含むリクエストを送信します。

後者は許可されて広く受け入れられていますか?クライアントはチャレンジを選択できますか(ノンス)?

答えて

2

HTTPダイジェスト認証では、サーバーは常にノンスを生成します。

しかし、HTTP認証は拡張可能であり、アプリケーションは(基本とダイジェスト以外の)他の認証方法を実装する可能性があります。リンク先の例では、クライアントはWSSE(主にSOAPベース)Webサービスの認証形式を使用して認証しています。 WSSEでは、クライアントはノンスを生成します。

1

Digest Access Authentication schemeは、クライアントがサーバーに対して自身を認証するが、ではなく、の逆の一方向認証に過ぎません。サーバーのみが、クライアントが正しく認証されるために応答する必要があるチャレンジを発行します。したがって、クライアントは本物かどうかを知るだけですが、クライアントはそのサーバーが本物かどうかわかりません。

リンクされたコードは、まったく逆の動作をします。クライアントは、サーバーを認証してサーバーにチャレンジを発行します。したがって、クライアントがサーバーが本物かどうかを知ることができます。

mutual authenticationが最適です。

+0

リンクされた例では、クライアントはサーバーにチャレンジをまったく発行しません。サーバーからチャレンジを先取りしています。 –

+0

@ Phil:本当ですか?つまり、クライアントは自分自身を認証するためにノンスを実際に選択することができます。次に、真正性の検証はサーバー側のようにどのように見えますか?幸いにも、通信はHTTPS経由です。 – Gumbo

+0

私の答えにリンクしているWSSEの記事を読んでください。クライアントは、パスワードハッシュとナンスを送信します。ノンスは、サーバーが独自のパスワードハッシュを生成してクライアントが送信したものと比較するために使用します。これは、ダイジェストに対する小さな最適化を可能にします。サーバーからノンスを取得するための特別なラウンドトリップはありません。 –

関連する問題