SaslAcceptSecurityContext 函数 (sspi.h)
SaslAcceptSecurityContext 函数包装对安全支持提供程序接口AcceptSecurityContext 的标准调用 (常规) 函数,包括 SASL 服务器 Cookie 的创建。
语法
SECURITY_STATUS SEC_ENTRY SaslAcceptSecurityContext(
[in] PCredHandle phCredential,
[in, optional] PCtxtHandle phContext,
[in] PSecBufferDesc pInput,
[in] unsigned long fContextReq,
[in] unsigned long TargetDataRep,
[out] PCtxtHandle phNewContext,
[in, out] PSecBufferDesc pOutput,
[out] unsigned long *pfContextAttr,
[out, optional] PTimeStamp ptsExpiry
);
参数
[in] phCredential
服务器凭据的句柄。 服务器调用 AcquireCredentialsHandle 函数,并设置了 INBOUND 标志以检索此句柄。
[in, optional] phContext
指向 CtxtHandle 结构的指针。 在首次调用 AcceptSecurityContext (General) 时,此指针为 NULL。 在后续调用中, phContext 是第一次调用在 phNewContext 参数中返回的部分格式上下文的句柄。
[in] pInput
指向客户端调用 InitializeSecurityContext 生成的 SecBufferDesc 结构的指针 (包含输入缓冲区描述符的 General) 函数。
SASL 需要 SECBUFFER_TOKEN类型的单个缓冲区。 第一次调用 AcceptSecurityContext (General) 函数的缓冲区为空,并包含从客户端收到的第二次调用的质询响应。
[in] fContextReq
指定服务器建立上下文所需的属性的位标志。 可以使用按位 OR 操作组合位标志。 下表列出了可能的值。
“值” | 含义 |
---|---|
|
加密和解密消息。
仅适用于 SASL 的摘要 SSP。 |
|
使用用于 HTTP 的摘要。 省略此标志以将摘要用作 SASL 机制。 |
[in] TargetDataRep
指示目标上的数据表示形式,例如字节排序。 此值可以是SECURITY_NATIVE_DREP或SECURITY_NETWORK_DREP。
[out] phNewContext
指向 CtxtHandle 结构的指针。 在首次调用 AcceptSecurityContext (General) 时,此指针接收新的上下文句柄。 在后续调用中, phNewContext 可以与 phContext 参数中指定的句柄相同。
[in, out] pOutput
指向包含输出缓冲区描述符 的 SecBufferDesc 结构的指针。 此缓冲区将发送到客户端,以便输入对 InitializeSecurityContext (常规) 的其他调用。 即使函数返回SEC_E_OK,也可能生成输出缓冲区。 生成的任何缓冲区都必须发送回客户端应用程序。
[out] pfContextAttr
指向一个变量的指针,该变量接收一组指示已建立上下文的属性的位标志。 有关各种属性的说明,请参阅 上下文要求。 用于此参数的标志以 ASC_RET 为前缀,例如 ASC_RET_DELEGATE。
在最终函数调用成功返回之前,不要检查与安全相关的属性。 与安全性无关的属性标志(如ASC_RET_ALLOCATED_MEMORY标志)可以在最终返回之前进行检查。
[out, optional] ptsExpiry
指向接收上下文过期时间的 TimeStamp 结构的指针。 建议 安全包 始终在本地时间返回此值。
返回值
如果调用成功完成,此函数将返回SEC_E_OK。 下表显示了一些可能的失败返回值。
返回代码 | 说明 |
---|---|
|
不允许进行 Authz 处理。 |
|
内存不足,无法完成请求。 |
|
pOutput 参数中没有令牌缓冲区,或者消息解密失败。 |
注解
识别返回 SEC_E_OK的 AcceptSecurityContext (常规) 函数的最后调用。 如果生成了返回令牌,则会在返回客户端的一次往返行程中暂停 SASL 处理,以允许处理最终令牌。 交换完成后,SEC_E_CONTINUE_NEEDED将返回到应用程序,并使用 SSPI 消息函数加密额外的 SASL 服务器 Cookie。 初始服务器 Cookie 指示是否支持 INTEGRITY 和 PRIVACY。 此初始服务器 Cookie 由客户端处理,客户端返回客户端 Cookie 以指示客户端请求的服务。 然后,服务器将解密客户端 Cookie,并针对以下消息流量确定最终服务。
要求
最低受支持的客户端 | 无受支持的版本 |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | sspi.h (包括 Security.h) |
Library | Secur32.lib |
DLL | Secur32.dll |
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈