SpAcceptLsaModeContextFn 回调函数 (ntsecpkg.h)

服务器调度函数,用于创建由服务器和客户端共享 的安全上下文

当服务器调用安全支持提供程序接口AcceptSecurityContext (General) 函数时,将调用 SpAcceptLsaModeContext 函数。

语法

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

指示上下文要求的标志。 下表列出了有效值。

含义
ASC_REQ_DELEGATE
允许服务器模拟客户端。
ASC_REQ_MUTUAL_AUTH
客户端和服务器都需要证明其身份。
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
调用方需要三段相互身份验证事务。
ASC_REQ_DATAGRAM
应使用数据报类型的通信通道。 有关详细信息,请参阅 数据报上下文
ASC_REQ_CONNECTION
应使用连接类型的通信通道。 有关详细信息,请参阅 面向连接的上下文
ASC_REQ_EXTENDED_ERROR
如果上下文失败,请生成错误消息以发送回客户端。
ASC_REQ_STREAM
应使用流式通信通道。 有关详细信息,请参阅Stream上下文
ASC_REQ_INTEGRITY
可以验证缓冲区完整性;但是,不会检测到重播和失序的消息。

[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 结构的指针,该结构接收在创建用户模式安全上下文时要复制的 特定于上下文的数据。 必须使用 AllocateLsaHeap 函数分配 ContextData 的内存。 本地安全机构 (LSA) 将释放内存。

返回值

如果 SpAcceptLsaModeContext 函数成功,并且无需进行更多处理即可建立安全上下文,则返回STATUS_SUCCESS。 如果需要其他处理,函数应返回SEC_I_CONTINUE_NEEDED。

如果函数由于任何其他原因未能创建安全上下文,请返回一个指示原因的 NTSTATUS 代码。

注解

SpInitLsaModeContext 是用于创建安全上下文的客户端函数。

SSP/AP 必须实现 SpAcceptLsaModeContext 函数。 为实现提供的实际名称由开发人员决定。

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

要求

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

另请参阅

AllocateLsaHeap

SpInitLsaModeContext

SpLsaModeInitialize