SpAcceptLsaModeContextFn コールバック関数 (ntsecpkg.h)
サーバーとクライアントによって共有される セキュリティ コンテキスト を作成するために使用されるサーバー ディスパッチ関数。
SpAcceptLsaModeContext 関数は、サーバーがセキュリティ サポート プロバイダー インターフェイスの AcceptSecurityContext (General) 関数を呼び出すときに呼び出されます。
構文
SpAcceptLsaModeContextFn Spacceptlsamodecontextfn;
NTSTATUS Spacceptlsamodecontextfn(
[in] LSA_SEC_HANDLE CredentialHandle,
[in] LSA_SEC_HANDLE ContextHandle,
[in] PSecBufferDesc InputBuffer,
[in] ULONG ContextRequirements,
[in] ULONG TargetDataRep,
[out] PLSA_SEC_HANDLE NewContextHandle,
[out] PSecBufferDesc OutputBuffer,
[out] PULONG ContextAttributes,
[out] PTimeStamp ExpirationTime,
[out] PBOOLEAN MappedContext,
[out] PSecBuffer ContextData
)
{...}
パラメーター
[in] CredentialHandle
任意。 コンテキストに使用する資格情報を処理します。
[in] ContextHandle
省略可能。 現在のコンテキストを処理します。
[in] InputBuffer
クライアントからの情報を含む SecBufferDesc 構造体へのポインター。
[in] ContextRequirements
コンテキスト要件を示すフラグ。 次の表に、有効な値を示します。
値 | 意味 |
---|---|
|
サーバーはクライアントの権限を借用できます。 |
|
ID を証明するには、クライアントとサーバーの両方が必要です。 |
|
セキュリティ コンテキストは、再生されたパケットの検出をサポートします。 |
|
セキュリティ コンテキストは、順序が整ったメッセージの検出をサポートします。 |
|
新しい セッション キー をネゴシエートする必要があります。 |
|
クライアントが対話型ユーザーの場合、パッケージは可能であれば、ユーザーに適切な資格情報の入力を求める必要があります。 |
|
入力バッファーには、接続の認証に使用する必要があるパッケージ固有の資格情報が含まれています。 |
|
パッケージはメモリを割り当てる必要があります。 呼び出し元は、最終的に FreeContextBuffer 関数を呼び出して、セキュリティ パッケージによって割り当てられたメモリを解放する必要があります。 |
|
呼び出し元は、3 段階の相互認証トランザクションを想定しています。 |
|
データグラム型の通信チャネルを使用する必要があります。 詳細については、「 データグラム コンテキスト」を参照してください。 |
|
接続タイプの通信チャネルを使用する必要があります。 詳細については、「 接続指向コンテキスト」を参照してください。 |
|
コンテキストが失敗した場合は、エラー応答メッセージを生成してクライアントに送り返します。 |
|
ストリーム型の通信チャネルを使用する必要があります。 詳細については、「Stream コンテキスト」を参照してください。 |
|
バッファーの整合性を検証できます。ただし、再生されたメッセージとシーケンス外のメッセージは検出されません。 |
[in] TargetDataRep
使用するデータ表現 (バイト順序など) を示すフラグ。 SECURITY_NATIVE_DREPまたはSECURITY_NETWORK_DREPを含みます。
[out] NewContextHandle
LSA_SEC_HANDLEへのポインター。 AcceptSecurityContext の最初の呼び出しで、このポインターは新しいコンテキスト ハンドルを受け取ります。 以降の呼び出しでは、 NewContextHandle は ContextHandle パラメーターで指定されたハンドルと同じにすることができます。
[out] OutputBuffer
クライアントに送信される情報を受信する SecBufferDesc 構造体へのポインター。
[out] ContextAttributes
サーバーがサポートするコンテキスト属性を指定するフラグへのポインター。 有効な値の一覧については、 ContextRequirements パラメーターを参照してください。
[out] ExpirationTime
コンテキストの有効期限を受け取る TimeStamp へのポインター。
[out] MappedContext
ブール値へのポインター。 セキュリティ パッケージがユーザー モードの SSP/AP 関数を実装する場合は、MappedContextを TRUE に設定します。
[out] ContextData
省略可能。 ユーザー モード セキュリティ コンテキストの作成時にコピーするコンテキスト固有のデータを受け取る SecBuffer 構造体へのポインター。 ContextData のメモリは、AllocateLsaHeap 関数を使用して割り当てる必要があります。 ローカル セキュリティ機関 (LSA) によってメモリが解放されます。
戻り値
SpAcceptLsaModeContext 関数が成功し、セキュリティ コンテキストを確立するためにこれ以上の処理が必要ない場合は、STATUS_SUCCESSを返します。 追加の処理が必要な場合、関数は SEC_I_CONTINUE_NEEDEDを返す必要があります。
関数が他の理由でセキュリティ コンテキストを作成できない場合は、その理由を示す NTSTATUS コードを返します。
注釈
SpInitLsaModeContext は、セキュリティ コンテキストを作成するためのクライアント側関数です。
SSP/AP は 、SpAcceptLsaModeContext 関数を実装する必要があります。 実装に与えられる実際の名前は開発者次第です。
SpAcceptLsaModeContext 関数へのポインターは、SpLsaModeInitialize 関数から受信したSECPKG_FUNCTION_TABLE構造体で使用できます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | ntsecpkg.h |