次の方法で共有


ダイジェスト アクセス プロトコル

RFC 2617 で指定されたダイジェスト アクセス プロトコルは、Microsoft Digest セキュリティ サポート プロバイダー (SSP) によって実装されます。 実装は、クライアント/サーバー アプリケーションが呼び出す一連の Microsoft セキュリティ サポート プロバイダー インターフェイス (SSPI) セキュリティ コンテキスト関数で構成されます。

  • メッセージ交換の セキュリティ コンテキスト を確立します。
  • ダイジェスト SSP に必要なデータ オブジェクト (資格情報やコンテキスト ハンドルなど) 取得します。
  • メッセージ の整合性 と機密性のメカニズムにアクセスします。

ダイジェスト アクセス認証は、ペアの要求/応答トランザクション内で行われ、要求はクライアントで送信され、応答はサーバー上で送信されます。 ダイジェスト アクセス認証が成功するには、2 つの要求と応答のペアが必要です。

ダイジェスト SSP を HTTP 認証に使用する場合、最初と 2 番目の要求/応答ペアの間に接続は維持されません。 つまり、サーバーは最初の応答を送信した後、2 番目の要求を待機しません。

次の図は、ダイジェスト SSP を使用して認証を完了するためにクライアントとサーバーによって HTTP パスに対して実行される手順を示しています。 SASL メカニズムでは相互認証が使用されるため、認証データは、クライアントが正しいサーバーと通信していることを確認する最後の ASC サーバー呼び出しでクライアントに送り返されます。

ダイジェスト アクセス プロトコル

このプロセスは、HTTP 要求 1 を送信することで、アクセス保護されたリソースをサーバーに要求するクライアントから始まります。

サーバーは HTTP 要求 1 を受け取り、要求に含まれていない認証情報がリソースに必要であると判断します。 サーバーは、次のようにクライアントに対してチャレンジを生成します。

  1. サーバーは AcquireCredentialsHandle 関数を呼び出して資格情報を取得します。
  2. サーバーは AcceptSecurityContext (General) 関数を呼び出してダイジェスト チャレンジを生成します。
  3. サーバーは、クライアントの要求に対する応答としてWWW-Authenticate ヘッダーを送信します (HTTP 応答 1 として表示)。 ヘッダーには、ダイジェスト チャレンジと、クライアント用に確立された部分的な セキュリティ コンテキスト への参照を含む不透明なディレクティブが含まれています。 ヘッダーは、クライアント要求が未承認のアクセス エラーを生成したことを示す 401 状態コードで送信されます。 ダイジェストチャレンジの詳細については、「ダイジェストチャレンジの内容」および「ダイジェストチャレンジの生成」を参照してください。
  4. クライアントは HTTP 応答 1 を受け取り、サーバーによって送信されたダイジェスト チャレンジを抽出し、次のようにダイジェスト チャレンジ応答を生成します。
    1. ユーザーの資格情報は、 AcquireCredentialsHandle 関数を呼び出すか、ユーザーに資格情報の入力を対話形式で求めることで取得されます。
    2. チャレンジと資格情報の情報は InitializeSecurityContext (General) 関数に渡され、ダイジェスト チャレンジ応答が生成されます。
  5. クライアントは、チャレンジ応答を含む Authorization ヘッダーをサーバーに送信します (HTTP 要求 2 と表示)。 ダイジェスト チャレンジ応答の詳細については、「ダイジェスト チャレンジ応答の内容」および「ダイジェスト チャレンジ応答の生成」を参照してください。
  6. サーバーは HTTP 要求 2 を受信し、クライアントから送信されたチャレンジ応答を抽出し、 AcceptSecurityContext (General) 関数を呼び出して情報を認証します。 認証プロセスの詳細については、「 Microsoft Digest を使用した初期認証」を参照してください。
  7. サーバーは、ダイジェスト アクセス プロトコルで必要な 2 番目と最後の応答として HTTP 応答 2 をクライアントに送信します。 認証が成功した場合、この応答には要求されたリソースが含まれます。

ダイジェスト チャレンジ応答の内容