RFC 2617 で指定されたダイジェスト アクセス プロトコルは、Microsoft Digest セキュリティ サポート プロバイダー (SSP) によって実装されます。 この実装は、クライアント/サーバー アプリケーションが呼び出 Microsoft Security Support Provider Interface (SSPI) セキュリティ コンテキスト関数のセットで構成されます。
- メッセージ交換の セキュリティ コンテキスト を確立します。
- 資格情報 やコンテキスト ハンドルなど、Digest SSP に必要なデータ オブジェクトを取得します。
- メッセージ 整合性 と機密性のメカニズムにアクセスします。
ダイジェスト アクセス認証は、クライアントで送信された要求とサーバーで送信された応答を使用して、ペアの要求/応答トランザクション内で行われます。 ダイジェスト アクセス認証が成功するには、2 つの要求/応答ペアが必要です。
ダイジェスト SSP を HTTP 認証に使用する場合、最初と 2 番目の要求/応答ペアの間に接続は維持されません。 つまり、サーバーは最初の応答を送信した後、2 番目の要求を待機しません。
次の図は、Digest SSP を使用して認証を完了するためにクライアントとサーバーによって HTTP パスに対して実行される手順を示しています。 SASL メカニズムは相互認証を利用するため、クライアントが正しいサーバーと通信していることを確認する最後の ASC サーバー呼び出しで認証データがクライアントに送り返されます。
ダイジェスト アクセス プロトコルする
このプロセスは、HTTP 要求 1 を送信して、サーバーからアクセス保護されたリソースを要求するクライアントから始まります。
サーバーは HTTP 要求 1 を受信し、要求に含まれていない認証情報がリソースに必要であると判断します。 サーバーは、次のようにクライアントにチャレンジを生成します。
- サーバーは、AcquireCredentialsHandle 関数を呼び出すことによって、資格情報 を取得します。
- サーバーは、AcceptSecurityContext (General) 関数を呼び出すことによってダイジェスト チャレンジを生成します。
- サーバーは、クライアントの要求への応答として WWW-Authenticate ヘッダーを送信します (HTTP 応答 1 と表示されます)。 ヘッダーには、ダイジェスト チャレンジと、クライアント用に確立部分的なセキュリティ コンテキストへの参照を含む不透明なディレクティブが含まれています。 ヘッダーは、クライアント要求が未承認のアクセス エラーを生成したことを示す 401 状態コードで送信されます。 ダイジェスト チャレンジの詳細については、「ダイジェスト チャレンジ のコンテンツの とダイジェスト チャレンジ の生成」を参照してください。
- クライアントは HTTP 応答 1 を受け取り、サーバーによって送信されたダイジェスト チャレンジを抽出し、次のようにダイジェスト チャレンジ応答を生成します。
- ユーザーの資格情報は、AcquireCredentialsHandle 関数を呼び出すか、ユーザーに資格情報の入力を対話形式で求めることで取得されます。
- チャレンジと資格情報の情報は、ダイジェスト チャレンジ応答を生成する InitializeSecurityContext (General) 関数に渡されます。
- クライアントは、チャレンジ応答を含む Authorization ヘッダーをサーバーに送信します (HTTP 要求 2 と表示されます)。 ダイジェストチャレンジ応答の詳細については、「ダイジェストチャレンジ応答 の内容を し、ダイジェストチャレンジ応答 を生成するを参照してください。
- サーバーは HTTP 要求 2 を受信し、クライアントから送信されたチャレンジ応答を抽出し、AcceptSecurityContext (General) 関数を呼び出して情報を認証します。 認証プロセスの詳細については、「Microsoft Digest を使用した初期認証の」を参照してください。
- サーバーは、ダイジェスト アクセス プロトコルで必要な 2 番目と最後の応答として HTTP 応答 2 をクライアントに送信します。 認証が成功した場合、この応答には要求されたリソースが含まれます。
関連トピック
-
ダイジェスト チャレンジ応答 の内容を する