Win32 API 日本語リファレンス
ホーム › Security.Authentication.Identity › SpAcceptLsaModeContextFn

SpAcceptLsaModeContextFn

コールバック

シグネチャ

NTSTATUS SpAcceptLsaModeContextFn(
    UINT_PTR CredentialHandle,
    UINT_PTR ContextHandle,
    SecBufferDesc* InputBuffer,
    DWORD ContextRequirements,
    DWORD TargetDataRep,
    UINT_PTR* NewContextHandle,
    SecBufferDesc* OutputBuffer,
    DWORD* ContextAttributes,
    LONGLONG* ExpirationTime,
    BOOLEAN* MappedContext,
    SecBuffer* ContextData
);

パラメーター

フィールド型説明
CredentialHandleUINT_PTR省略可能。コンテキストに使用する資格情報のハンドルです。
ContextHandleUINT_PTR省略可能。現在のコンテキストのハンドルです。
InputBufferSecBufferDesc*クライアントからの情報を格納した SecBufferDesc 構造体へのポインターです。
ContextRequirementsDWORD

コンテキストの要件を示すフラグです。有効な値を次の表に示します。

値 意味
ASC_REQ_DELEGATE
サーバーがクライアントを偽装することを許可します。
ASC_REQ_MUTUAL_AUTH
クライアントとサーバーの双方が、自身の ID を証明する必要があります。
ASC_REQ_REPLAY_DETECT
セキュリティコンテキストが、リプレイされたパケットの検出をサポートします。
ASC_REQ_SEQUENCE_DETECT
セキュリティコンテキストが、順序が乱れたメッセージの検出をサポートします。
ASC_REQ_USE_SESSION_KEY
新しいセッションキーをネゴシエートする必要があります。
ASC_REQ_PROMPT_FOR_CREDS
クライアントが対話ユーザーの場合、パッケージは可能であれば適切な資格情報の入力をユーザーに求める必要があります。
ASC_REQ_USE_SUPPLIED_CREDS
入力バッファーには、接続の認証に使用するパッケージ固有の資格情報が格納されています。
ASC_REQ_ALLOCATE_MEMORY
パッケージがメモリを割り当てる必要があります。呼び出し元は、最終的に FreeContextBuffer 関数を呼び出して、セキュリティパッケージが割り当てたメモリを解放する必要があります。
ASC_REQ_USE_DCE_STYLE
呼び出し元は、3 レグの相互認証トランザクションを想定しています。
ASC_REQ_DATAGRAM
データグラム型の通信チャネルを使用します。詳細については、 Datagram Contexts を参照してください。
ASC_REQ_CONNECTION
接続型の通信チャネルを使用します。詳細については、 Connection-Oriented Contexts を参照してください。
ASC_REQ_EXTENDED_ERROR
コンテキストの確立に失敗した場合、クライアントに返信するエラーメッセージを生成します。
ASC_REQ_STREAM
ストリーム型の通信チャネルを使用します。詳細については、 Stream Contexts を参照してください。
ASC_REQ_INTEGRITY
バッファーの整合性を検証できます。ただし、リプレイされたメッセージや順序が乱れたメッセージは検出されません。
TargetDataRepDWORD使用するデータ表現 (バイトオーダーなど) を示すフラグです。SECURITY_NATIVE_DREP または SECURITY_NETWORK_DREP が格納されます。
NewContextHandleUINT_PTR*LSA_SEC_HANDLE へのポインターです。 AcceptSecurityContext の最初の呼び出しでは、このポインターが新しいコンテキストハンドルを受け取ります。2 回目以降の呼び出しでは、NewContextHandle は ContextHandle パラメーターで指定したハンドルと同じものでもかまいません。
OutputBufferSecBufferDesc*クライアントに送信する情報を受け取る SecBufferDesc 構造体へのポインターです。
ContextAttributesDWORD*サーバーがサポートするコンテキスト属性を指定するフラグへのポインターです。有効な値の一覧については、ContextRequirements パラメーターを参照してください。
ExpirationTimeLONGLONG*コンテキストの有効期限を受け取る TimeStamp へのポインターです。
MappedContextBOOLEAN*ブール値へのポインターです。セキュリティパッケージがユーザーモードの SSP/AP 関数を実装している場合は、MappedContext に TRUE を設定します。
ContextDataSecBuffer*省略可能。ユーザーモードのセキュリティコンテキストを作成する際にコピーする、コンテキスト固有のデータを受け取る SecBuffer 構造体へのポインターです。ContextData のメモリは AllocateLsaHeap 関数を使用して割り当てる必要があります。メモリは Local Security Authority (LSA) によって解放されます。

公式ドキュメント

サーバーとクライアントが共有するセキュリティコンテキストを作成するために使用される、サーバー側のディスパッチ関数です。

SpAcceptLsaModeContext 関数は、サーバーが Security Support Provider Interface の AcceptSecurityContext (General) 関数を呼び出したときに呼び出されます。

戻り値

SpAcceptLsaModeContext 関数が成功し、セキュリティコンテキストの確立に追加の処理が不要な場合は、STATUS_SUCCESS を返します。追加の処理が必要な場合は、SEC_I_CONTINUE_NEEDED を返します。

それ以外の理由でセキュリティコンテキストの作成に失敗した場合は、その理由を示す NTSTATUS コードを返します。

解説(Remarks)

SpInitLsaModeContext は、セキュリティコンテキストを作成するためのクライアント側の関数です。

SSP/AP は SpAcceptLsaModeContext 関数を実装する必要があります。実装に付ける実際の名前は開発者が決定します。

SpAcceptLsaModeContext 関数へのポインターは、 SpLsaModeInitialize 関数から受け取る SECPKG_FUNCTION_TABLE 構造体に格納されています。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)