SpInitLsaModeContextFn コールバック関数 (ntsecpkg.h)

SpInitLsaModeContext 関数は、サーバーとクライアントの間にセキュリティ コンテキストを確立するために使用されるクライアント ディスパッチ関数です。

SpInitLsaModeContext 関数は、クライアントがセキュリティ サポート プロバイダー インターフェイスInitializeSecurityContext (General) 関数を呼び出すときに呼び出されます。

構文

SpInitLsaModeContextFn Spinitlsamodecontextfn;

NTSTATUS Spinitlsamodecontextfn(
  [in]  LSA_SEC_HANDLE CredentialHandle,
  [in]  LSA_SEC_HANDLE ContextHandle,
  [in]  PUNICODE_STRING TargetName,
  [in]  ULONG ContextRequirements,
  [in]  ULONG TargetDataRep,
  [in]  PSecBufferDesc InputBuffers,
  [out] PLSA_SEC_HANDLE NewContextHandle,
  [out] PSecBufferDesc OutputBuffers,
  [out] PULONG ContextAttributes,
  [out] PTimeStamp ExpirationTime,
  [out] PBOOLEAN MappedContext,
  [out] PSecBuffer ContextData
)
{...}

パラメーター

[in] CredentialHandle

任意。 コンテキストに使用する 資格情報 を処理します。 ContextHandle パラメーターが NULL でない場合は、 CredentialHandleNULL にすることができます

[in] ContextHandle

省略可能。 このコンテキストの基礎として使用するコンテキストを処理します。 CredentialHandle パラメーターが NULL でない場合は、 ContextHandleNULL にすることができます

[in] TargetName

省略可能。 コンテキストのターゲットの名前を含む UNICODE_STRING へのポインター。 TargetName の内容はパッケージ固有であり、LSA によって解釈されません。

[in] ContextRequirements

クライアントに必要なコンテキスト属性を示すフラグ。 実際のコンテキスト属性は 、ContextAttributes パラメーターで返されます。

次の表に、有効な値を示します。

意味
ISC_REQ_DELEGATE
サーバーはクライアントの権限を借用できます。
ISC_REQ_MUTUAL_AUTH
ID を証明するには、クライアントとサーバーの両方が必要です。
ISC_REQ_REPLAY_DETECT
セキュリティ コンテキストは、再生されたパケットの検出をサポートします。
ISC_REQ_SEQUENCE_DETECT
セキュリティ コンテキストは、順序が整ったメッセージの検出をサポートします。
ISC_REQ_USE_SESSION_KEY
新しい セッション キー をネゴシエートする必要があります。
ISC_REQ_PROMPT_FOR_CREDS
クライアントが対話型ユーザーの場合、パッケージは可能であれば、ユーザーに適切な資格情報の入力を求める必要があります。
ISC_REQ_USE_SUPPLIED_CREDS
入力バッファーには、接続の認証に使用する必要があるパッケージ固有の資格情報が含まれています。
ISC_REQ_ALLOCATE_MEMORY
パッケージはメモリを割り当てる必要があります。 呼び出し元は、最終的に FreeContextBuffer 関数を呼び出して、パッケージによって割り当てられたメモリを解放する必要があります。
ISC_REQ_USE_DCE_STYLE
呼び出し元は、3 段階の相互認証トランザクションを想定しています。
ISC_REQ_DATAGRAM
データグラム型の通信チャネルを使用する必要があります。 詳細については、「 データグラム コンテキスト」を参照してください。
ISC_REQ_CONNECTION
接続タイプの通信チャネルを使用する必要があります。 詳細については、「 接続指向コンテキスト」を参照してください。
ISC_REQ_EXTENDED_ERROR
コンテキストが失敗した場合は、エラー応答メッセージを生成してクライアントに送り返します。
ISC_REQ_STREAM
ストリーム型の通信チャネルを使用する必要があります。 詳細については、「Stream コンテキスト」を参照してください。
ISC_REQ_INTEGRITY
バッファーの整合性が検証されます。ただし、再生されたメッセージとシーケンス外のメッセージは検出されません。

[in] TargetDataRep

ターゲット上のデータ表現 (バイト順序など) を示すフラグ。 SECURITY_NATIVE_DREPまたはSECURITY_NETWORK_DREPを含みます。

[in] InputBuffers

サーバーからの以前の応答メッセージを含む SecBufferDesc 構造体へのポインター。 この関数が初めて InputBuffers パラメーターと呼ばれるのは NULL です

[out] NewContextHandle

新しい セキュリティ コンテキストへのハンドルを受け取るポインター。 セキュリティ コンテキストの使用が完了したら、 SpDeleteContext 関数を呼び出してハンドルを解放します。

[out] OutputBuffers

サーバーに戻すセキュリティ トークンを含む SecBufferDesc 構造体へのポインター。

[out] ContextAttributes

新しいコンテキストの属性を指定するフラグへのポインター。 クライアントは 、ContextRequirements パラメーターを使用して一連の属性を要求します。 ContextRequirements フラグが ContextAttributes フラグと一致しない場合、クライアントは続行するか終了するかを決定する必要があります。 有効なフラグの完全な一覧については、「 コンテキスト要件」を参照してください。

[out] ExpirationTime

新しいコンテキストの有効期限を受け取る TimeStamp へのポインター。

[out] MappedContext

ブール値へのポインター。 セキュリティ パッケージがユーザー モードの SSP/AP 関数を実装する場合は、MappedContextを TRUE に設定します。

[out] ContextData

ユーザー モードのセキュリティ コンテキストの作成時にコピーするデータを受け取る SecBuffer 構造体へのポインター。 AllocateLsaHeap 関数を使用して ContextData のメモリを割り当てます。 LSA によってメモリが解放されます。

戻り値

関数が成功し、それ以上の処理が必要ない場合は、STATUS_SUCCESSを返します。 処理が完了していない場合、関数は SEC_I_CONTINUE_NEEDEDを返す必要があります。 この値が返されると、呼び出し元は InitializeSecurityContext (General) 関数をもう一度呼び出す必要があります。

関数が他の理由で セキュリティ コンテキスト の作成に失敗した場合は、失敗した理由を示す NTSTATUS コードを返す必要があります。

注釈

SpAcceptLsaModeContext 関数は、コンテキストを作成するためのサーバー側関数です。

SSP/AP は SpInitLsaModeContext 関数を実装する必要があります。ただし、実装に与えられる実際の名前は開発者が指定します。

SpInitLsaModeContext 関数へのポインターは、SpLsaModeInitialize 関数から受信したSECPKG_FUNCTION_TABLE構造体で使用できます。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー ntsecpkg.h

こちらもご覧ください

AllocateLsaHeap

InitializeSecurityContext (全般)

SECPKG_FUNCTION_TABLE

SpAcceptLsaModeContext

SpLsaModeInitialize

TimeStamp