サーバー コンテキストの初期化
クライアントと同様に、サーバーも 資格情報 ハンドルを取得して、クライアントからの受信認証要求に応答する準備を整えます。 サーバー資格情報は、サーバー認証または相互認証をサポートする セキュリティ プロトコル でクライアントに対してサーバーを認証するために使用されます。 サーバーは、サーバーの起動に使用されるサービス アカウントによって定義された資格情報のハンドルを取得します。 これを行う場合は 、AcquireCredentialsHandle を呼び出します。
サーバーは、資格情報ハンドルを取得してからリッスン状態に入ることができます。または、接続要求が到着するまでリッスン状態で待機してから、受信資格情報ハンドルを取得できます。 資格情報関数の詳細については、「 資格情報の管理」を参照してください。
サーバーは、クライアントから接続要求メッセージを受信すると、AcceptSecurityContext (General) を使用してクライアントのローカル セキュリティ コンテキストを作成します。 サーバーは、このローカル セキュリティ コンテキストを使用して、同じクライアントによる今後の要求を実行します。 コンテキスト関数の詳細については、「 コンテキスト管理」を参照してください。
サーバーは、戻り状態と出力バッファー記述子を調べて、これまでにエラーがないことを確認し、エラーがある場合は接続要求を拒否できます。 AcceptSecurityContext (General) によって返される出力バッファーに情報がある場合は、そのバッファーをクライアントへの応答メッセージにバンドルします。
AcceptSecurityContext (General) からの出力バッファーは、クライアントに返送する必要があります。 さらに、戻り状態でプロトコルを続行する必要がある場合 (SEC_I_CONTINUE_NEEDEDまたはSEC_I_COMPLETE_AND_CONTINUE)、クライアントとの別のメッセージ交換が必要です。
追加のレッグの場合、サーバーはクライアントが別のメッセージで応答するのを待機します。 この待機は、クライアントが意図的に応答しないサービス拒否攻撃を回避するためにタイムアウトし、サーバー スレッドとすべてのサーバー スレッドが応答を停止する原因になる可能性があります。