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
指示上下文要求的标志。 下表列出了有效值。
值 | 含义 |
---|---|
|
允许服务器模拟客户端。 |
|
客户端和服务器都需要证明其身份。 |
|
安全上下文将支持检测重播的数据包。 |
|
安全上下文将支持检测无序消息。 |
|
必须协商新的 会话密钥 。 |
|
如果客户端是交互式用户,则包必须尽可能提示用户提供相应的凭据。 |
|
输入缓冲区包含应用于对连接进行身份验证的特定于包的凭据信息。 |
|
包必须分配内存。 调用方必须最终调用 FreeContextBuffer 函数来释放安全包分配的内存。 |
|
调用方需要三段相互身份验证事务。 |
|
应使用数据报类型的通信通道。 有关详细信息,请参阅 数据报上下文。 |
|
应使用连接类型的通信通道。 有关详细信息,请参阅 面向连接的上下文。 |
|
如果上下文失败,请生成错误消息以发送回客户端。 |
|
应使用流式通信通道。 有关详细信息,请参阅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 结构的指针,该结构接收在创建用户模式安全上下文时要复制的 特定于上下文的数据。 必须使用 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 |