SaslInitializeSecurityContextW 函数 (sspi.h)
SaslInitializeSecurityContext 函数包装对 安全支持提供程序接口InitializeSecurityContext(常规)的标准调用, 函数并从服务器处理 SASL 服务器 Cookie。
语法
SECURITY_STATUS SEC_ENTRY SaslInitializeSecurityContextW(
[in] PCredHandle phCredential,
[in] PCtxtHandle phContext,
[in] LPWSTR pszTargetName,
[in] unsigned long fContextReq,
[in] unsigned long Reserved1,
[in] unsigned long TargetDataRep,
[in] PSecBufferDesc pInput,
[in] unsigned long Reserved2,
[out] PCtxtHandle phNewContext,
[in, out] PSecBufferDesc pOutput,
[out] unsigned long *pfContextAttr,
[out, optional] PTimeStamp ptsExpiry
);
参数
[in] phCredential
返回的
AcquireCredentialsHandle 函数,用于生成 安全上下文。 使用 SaslInitializeSecurityContext 函数至少需要出站凭据。
[in] phContext
指向 CtxtHandle 结构的指针。 首次调用 SaslInitializeSecurityContext 函数时,此指针 NULL。 在第二次调用中,此参数是指向第一次调用 phNewContext 参数中返回的部分格式上下文的句柄的指针。
[in] pszTargetName
指向指示上下文目标的 Unicode 或 ANSI 字符串的指针。
[in] fContextReq
指示上下文要求的位标志。 用于此参数的标志前缀为 ISC_REQ_;例如:ISC_REQ_DELEGATE。 指定以下属性标志的组合。
有关各种属性的进一步说明,请参阅 上下文要求。
[in] Reserved1
保留值;必须为零。
[in] TargetDataRep
指示目标上的数据表示形式,例如字节排序。 可以是SECURITY_NATIVE_DREP,也可以是SECURITY_NETWORK_DREP。
[in] pInput
指向 SecBufferDesc 结构的指针,该结构包含指向作为包输入提供的缓冲区的指针。 在对函数的第一次调用时,指针必须 NULL。 在对函数的后续调用中,它是指向分配了足够内存的缓冲区的指针,用于保存远程对等方返回的令牌。
SASL 需要一个类型为 SECBUFFER_TOKEN 的缓冲区,其中包含从服务器收到的质询。
[in] Reserved2
保留值;必须为零。
[out] phNewContext
指向 CtxtHandle 结构的指针。 在第一次调用 SaslInitializeSecurityContext 函数时,此指针将接收新的上下文句柄。 第二次调用时,phNewContext 可以与在 phContext 参数中指定的句柄相同。
[in, out] pOutput
指向 SecBufferDesc 结构的指针,该结构包含指向接收输出数据的 SecBuffer 结构的指针。 如果缓冲区在输入中被键入为SEC_READWRITE,则会在输出中显示缓冲区。 如果请求(通过ISC_REQ_ALLOCATE_MEMORY),系统将为安全令牌分配缓冲区,并在安全令牌的缓冲区描述符中填写地址。
[out] pfContextAttr
指向一个变量的指针,用于接收一组位标志,这些标志指示已建立的
用于此参数的标志以ISC_RET_为前缀,例如ISC_RET_DELEGATE。
有关有效值的列表,请参阅 fContextReq 参数。
在最终函数调用成功返回之前,不要检查安全相关的属性。 与安全性无关的属性标志(如ASC_RET_ALLOCATED_MEMORY标志)可以在最终返回之前进行检查。
[out, optional] ptsExpiry
指向接收上下文过期时间的 TimeStamp 结构的指针。 建议 安全包 始终在本地时间返回此值。 此参数是可选的,应为短期客户端传递 NULL
返回值
如果调用成功完成,此函数将返回SEC_E_OK。 下表显示了一些可能的故障返回值。
返回代码 | 描述 |
---|---|
|
不允许使用 Authz 处理。 |
|
没有足够的内存可用于完成请求。 |
|
没有令牌缓冲区位于 pOutput 参数中,或者消息无法解密。 |
言论
注意
sspi.h 标头将 SaslInitializeSecurityContext 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 不支持 |
支持的最低服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | 窗户 |
标头 | sspi.h (包括 Security.h) |
库 | Secur32.lib |
DLL | Secur32.dll |