SaslAcceptSecurityContext 関数 (sspi.h)

SaslAcceptSecurityContext 関数は、セキュリティ サポート プロバイダー インターフェイスAcceptSecurityContext (General) 関数の標準呼び出しをラップし、SASL サーバー Cookie の作成を含みます。

構文

SECURITY_STATUS SEC_ENTRY SaslAcceptSecurityContext(
  [in]            PCredHandle    phCredential,
  [in, optional]  PCtxtHandle    phContext,
  [in]            PSecBufferDesc pInput,
  [in]            unsigned long  fContextReq,
  [in]            unsigned long  TargetDataRep,
  [out]           PCtxtHandle    phNewContext,
  [in, out]       PSecBufferDesc pOutput,
  [out]           unsigned long  *pfContextAttr,
  [out, optional] PTimeStamp     ptsExpiry
);

パラメーター

[in] phCredential

サーバーの資格情報のハンドル。 サーバーは、INBOUND フラグを設定 して AcquireCredentialsHandle 関数を呼び出して、このハンドルを取得します。

[in, optional] phContext

CtxtHandle 構造体へのポインター。 AcceptSecurityContext (General) の最初の呼び出しでは、このポインターは NULL です。 後続の呼び出しでは、 phContext は、最初の呼び出しによって phNewContext パラメーターで返された部分的に形成されたコンテキストへのハンドルです。

[in] pInput

入力バッファー記述子を含む InitializeSecurityContext (General) 関数のクライアント呼び出しによって生成される SecBufferDesc 構造体へのポインター。

SASL には、SECBUFFER_TOKEN型のバッファーが 1 つ必要です。 AcceptSecurityContext (General) 関数の最初の呼び出しではバッファーが空で、2 回目の呼び出しに対してクライアントから受信したチャレンジ応答が含まれます。

[in] fContextReq

サーバーがコンテキストを確立するために必要な属性を指定するビット フラグ。 ビット フラグは、ビットごとの OR 演算を使用して組み合わせることができます。 次の表に、それぞれの値を示します。

[値] 説明
ASC_REQ_CONFIDENTIALITY
メッセージの暗号化と暗号化解除。

SASL のダイジェスト SSP でのみ有効です。

ASC_REQ_HTTP
HTTP のダイジェストを使用します。 SASL メカニズムとしてダイジェストを使用するには、このフラグを省略します。

[in] TargetDataRep

ターゲットのバイト順序などのデータ表現を示します。 この値には、SECURITY_NATIVE_DREPまたはSECURITY_NETWORK_DREPのいずれかを指定できます。

[out] phNewContext

CtxtHandle 構造体へのポインター。 AcceptSecurityContext (General) の最初の呼び出しで、このポインターは新しいコンテキスト ハンドルを受け取ります。 後続の呼び出しでは、 phNewContextphContext パラメーターで指定されたハンドルと同じにすることができます。

[in, out] pOutput

出力バッファー記述子を含む SecBufferDesc 構造体へのポインター。 このバッファーは、 InitializeSecurityContext (General) への追加の呼び出しへの入力のためにクライアントに送信されます。 関数がSEC_E_OKを返した場合でも、出力バッファーが生成される場合があります。 生成されたバッファーは、クライアント アプリケーションに返送する必要があります。

[out] pfContextAttr

確立されたコンテキストの属性を示すビット フラグのセットを受け取る変数へのポインター。 さまざまな属性の説明については、「 コンテキスト要件」を参照してください。 このパラメーターに使用されるフラグには、ASC_RET_DELEGATEなどのASC_RETがプレフィックスとして付けられます。

最終的な関数呼び出しが正常に返されるまで、セキュリティ関連の属性をチェックしないでください。 セキュリティに関連しない属性フラグ (ASC_RET_ALLOCATED_MEMORY フラグなど) は、最終的な戻り値の前に確認できます。

[out, optional] ptsExpiry

コンテキストの有効期限を受け取る TimeStamp 構造体へのポインター。 セキュリティ パッケージでは、常にローカル時刻にこの値を返すようにお勧めします。

メモ 認証プロセスの最後の呼び出しまで、ネゴシエーションの後の段階で詳細情報が提供されるため、コンテキストの有効期限が正しくない可能性があります。 したがって、 ptsTimeStamp は、関数の最後の呼び出しまで NULL である必要があります。
 

戻り値

呼び出しが正常に完了すると、この関数はSEC_E_OKを返します。 次の表は、考えられるエラーの戻り値を示しています。

リターン コード 説明
SEC_E_ALGORITHM_MISMATCH
認証処理は許可されていません。
SEC_E_INSUFFICIENT_MEMORY
要求を完了するのに十分なメモリがありません。
SEC_E_INVALID_TOKEN
pOutput パラメーターにトークン バッファーが存在しないか、メッセージの暗号化を解除できませんでした。

解説

SEC_E_OKを返す AcceptSecurityContext (General) 関数の最後の呼び出しが識別されます。 戻りトークンが生成された場合、最終トークンの処理を許可するために、クライアントへの 1 回のラウンド トリップに対して SASL 処理が中断されます。 交換が完了すると、SSPI メッセージ関数で暗号化された追加の SASL サーバー Cookie を使用して、SEC_E_CONTINUE_NEEDEDがアプリケーションに返されます。 初期サーバー Cookie は、INTEGRITY と PRIVACY がサポートされているかどうかを示します。 この初期サーバー Cookie はクライアントによって処理され、クライアントはクライアントが要求するサービスを示すクライアント Cookie を返します。 その後、クライアント Cookie はサーバーによって暗号化解除され、最終的なサービスは次のメッセージ トラフィックに対して決定されます。

要件

   
サポートされている最小のクライアント サポートなし
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー sspi.h (Security.h を含む)
Library Secur32.lib
[DLL] Secur32.dll