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 [仅限桌面应用] |
目标平台 | Windows |
标头 | sspi.h (包括 Security.h) |
Library | Secur32.lib |
DLL | Secur32.dll |