SpInitLsaModeContextFn 回调函数 (ntsecpkg.h)

SpInitLsaModeContext 函数是用于在服务器和客户端之间建立安全上下文的客户端调度函数。

当客户端调用安全支持提供程序接口InitializeSecurityContext (General) 函数时,将调用 SpInitLsaModeContext 函数。

语法

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,CredentialHandle 可以为 NULL

[in] ContextHandle

可选。 要用作此上下文基础的上下文的句柄。 如果 CredentialHandle 参数不为 NULL,ContextHandle 可以为 NULL

[in] TargetName

可选。 指向包含上下文目标名称 的UNICODE_STRING 的指针。 TargetName 的内容特定于包,LSA 不解释。

[in] ContextRequirements

指示客户端所需的上下文属性的标志。 实际上下文属性在 ContextAttributes 参数中返回。

下表列出了有效值。

含义
ISC_REQ_DELEGATE
允许服务器模拟客户端。
ISC_REQ_MUTUAL_AUTH
客户端和服务器都需要证明其身份。
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
调用方需要三段相互身份验证事务。
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 函数;但是,为实现提供的实际名称由开发人员决定。

从 SpLsaModeInitialize 函数接收的 SECPKG_FUNCTION_TABLE 结构中提供了指向 SpInitLsaModeContext 函数的指针。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 ntsecpkg.h

另请参阅

AllocateLsaHeap

InitializeSecurityContext (常规)

SECPKG_FUNCTION_TABLE

SpAcceptLsaModeContext

SpLsaModeInitialize

TimeStamp