セキュリティで保護された接続を確立するために、クライアントはサーバーに認証要求を送信する前に、送信 資格情報 ハンドルを取得します。 サーバーは、認証要求からクライアントのセキュリティ コンテキストを作成します。 認証のセットアップには、クライアント側の SSPI 機能が 2 つあります。
- AcquireCredentialsHandle は、以前に取得したログオン 資格情報への参照を取得します。
- InitializeSecurityContext (General)、初期認証要求セキュリティ トークンを作成します。
このプロセスのコードは、GenClientContext 関数で、Windows ソケット クライアント で SSPI を使用するで確認できます。
クライアント プログラムは、別のユーザー名、ドメイン名、パスワードなどの独自のログオン資格情報に加えて資格情報を使用する必要がある場合は、AcquireCredentialsHandle 呼び出しで、追加の資格情報を指定する SEC_WINNT_AUTH_IDENTITY 構造で資格情報を提供します。 資格情報の機能の詳細については、「資格情報管理の」を参照してください。
手記
SEC_WINNT_AUTH_IDENTITY 構造体の Flags メンバーは、構造体内の文字列が ASCI または OEM の場合にSEC_WINNT_AUTH_IDENTITY_ANSIに設定できます。 ANSI 文字列は、MultiByteToWideChar 関数を使用して最初に Unicodeに変換される場合、SEC_WINNT_AUTH_IDENTITY 構造体のFlags メンバーをSEC_WINNT_AUTH_IDENTITY_UNICODEに設定して使用できます。
認証の最初の段階を開始するために、クライアントは InitializeSecurityContext (General) を呼び出して、接続要求メッセージでサーバーに送信される初期セキュリティ トークンを取得します。
クライアントは、出力バッファー記述子で受信したセキュリティ トークン情報を使用して、サーバーに送信するメッセージを生成します。 メッセージの構築は、さまざまなバッファーの配置などの点で、アプリケーション プロトコル の一部であり、両方の当事者が理解する必要があります。
クライアントは、InitializeSecurityContext (General) からの戻り状態をチェックして、認証が 1 回の呼び出しで完了するかどうかを確認します。 SEC_I_CONTINUE_NEEDEDの戻り状態は、セキュリティ プロトコルに複数の認証メッセージが必要であることを示します。 コンテキスト関数の詳細については、「コンテキスト管理 を参照してください。