SaslInitializeSecurityContextA 関数 (sspi.h)

SaslInitializeSecurityContext 関数は、InitializeSecurityContext (General) 関数セキュリティ サポート プロバイダー インターフェイスへの標準呼び出しをラップし、サーバーから SASL サーバー Cookie を処理します。

構文

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

パラメーター

[in] phCredential

資格情報へのハンドル 返されます。
AcquireCredentialsHandleセキュリティ コンテキストの構築に使用される関数です。 SaslInitializeSecurityContext 関数を使用するには、少なくとも OUTBOUND 資格情報が必要です。

[in] phContext

CtxtHandle 構造体へのポインター。 SaslInitializeSecurityContext 関数の最初の呼び出しでは、このポインターは NULL。 2 番目の呼び出しでは、このパラメーターは、最初の呼び出しによって phNewContext パラメーターで返される部分的に形成されたコンテキストへのハンドルへのポインターです。

[in] pszTargetName

コンテキストのターゲットを示す Unicode または ANSI 文字列へのポインター。

[in] fContextReq

コンテキストの要件を示すビット フラグ。 このパラメーターに使用されるフラグには、プレフィックスとして ISC_REQ_ が付いています。例: ISC_REQ_DELEGATE。 次の属性フラグの組み合わせを指定します。

価値 意味
ISC_REQ_REPLAY_DETECT
再生されたパケットを検出します。
ISC_REQ_SEQUENCE_DETECT
シーケンス外で受信したメッセージを検出します。
ISC_REQ_CONFIDENTIALITY
メッセージを暗号化します。
ISC_REQ_STREAM
ストリーム指向接続をサポートします。
ISC_REQ_EXTENDED_ERROR
エラーが発生すると、リモート パーティに通知されます。
ISC_REQ_CONNECTION
セキュリティ コンテキストでは、書式設定メッセージは処理されません。
ISC_REQ_MUTUAL_AUTH
クライアントとサーバーが認証されます。
ISC_REQ_INTEGRITY
メッセージに署名し、署名を確認します。
 

さまざまな属性の詳細については、「コンテキスト要件参照してください。

[in] Reserved1

予約値。は 0 にする必要があります。

[in] TargetDataRep

ターゲットのデータ表現 (バイト順序など) を示します。 SECURITY_NATIVE_DREPまたはSECURITY_NETWORK_DREPにすることができます。

[in] pInput

パッケージへの入力として指定されたバッファーへのポインターを含む SecBufferDesc 構造体へのポインター。 ポインターは、関数の最初の呼び出しで NULL する必要があります。 関数の後続の呼び出しでは、リモート ピアによって返されるトークンを保持するのに十分なメモリが割り当てられたバッファーへのポインターです。

SASL には、サーバーから受信したチャレンジを含む型 SECBUFFER_TOKEN のバッファーが 1 つ必要です。

[in] Reserved2

予約値。は 0 にする必要があります。

[out] phNewContext

CtxtHandle 構造体へのポインター。 SaslInitializeSecurityContext 関数の最初の呼び出しで、このポインターは新しいコンテキスト ハンドルを受け取ります。 2 番目の呼び出しでは、phNewContext phContext パラメーターで指定されたハンドルと同じにすることができます。

[in, out] pOutput

出力データを受け取る SecBuffer 構造体へのポインターを含む、SecBufferDesc 構造体へのポインター。 バッファーが入力にSEC_READWRITEとして型指定された場合は、出力時にそのバッファーが存在します。 システムは、要求された場合 (ISC_REQ_ALLOCATE_MEMORYを介して) セキュリティ トークンのバッファーを割り当て、セキュリティ トークンのバッファー記述子のアドレスを入力します。

[out] pfContextAttr

確立された コンテキスト属性を示すビット フラグのセットを受け取る変数へのポインター。 さまざまな属性の詳細については、「コンテキスト要件の」を参照してください。

このパラメーターに使用されるフラグには、ISC_RET_DELEGATEなどのISC_RET_がプレフィックスとして付けられます。

有効な値の一覧については、fContextReq パラメーター を参照してください。

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

リモート ピアとのネゴシエーション中に特定のコンテキスト属性が変更される可能性があります。
 

[out, optional] ptsExpiry

コンテキストの有効期限を受け取る TimeStamp 構造体へのポインター。 セキュリティ パッケージでは、常にローカル時刻でこの値を返 することをお勧めします。 このパラメーターは省略可能であり、有効期間の短いクライアント NULL を渡す必要があります。

戻り値

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

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

備考

手記

sspi.h ヘッダーは、SaslInitializeSecurityContext をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルまたは実行時エラーが発生する不一致につながる可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント サポートされていません
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー sspi.h (Security.h を含む)
ライブラリ Secur32.lib
DLL Secur32.dll