QueryContextAttributesA 函数 (sspi.h)

QueryContextAttributes (CredSSP) 函数允许传输应用程序查询凭据安全支持提供程序 (CredSSP) 安全包中的安全上下文的某些属性

语法

SECURITY_STATUS SEC_ENTRY QueryContextAttributesA(
  [in]  PCtxtHandle   phContext,
  [in]  unsigned long ulAttribute,
  [out] void          *pBuffer
);

参数

[in] phContext

要查询的安全上下文的句柄。

[in] ulAttribute

要返回的上下文的 属性。 此参数的取值可为下列值之一: 除非另行指定,否则这些属性同时适用于客户端和服务器。

含义
SECPKG_ATTR_C_ACCESS_TOKEN
0x80000012
pBuffer 参数包含指向SecPkgContext_AccessToken结构的指针,该结构指定当前安全上下文的访问令牌。

仅在服务器上支持此属性。

SECPKG_ATTR_C_FULL_ACCESS_TOKEN
0x80000082
pBuffer 参数包含指向SecPkgContext_AccessToken结构的指针,该结构指定当前安全上下文的访问令牌。

仅在服务器上支持此属性。

SECPKG_ATTR_CERT_TRUST_STATUS
0x80000084
pBuffer 参数包含指向CERT_TRUST_STATUS结构的指针,该结构指定有关证书的信任信息。

此属性仅在客户端上受支持。

SECPKG_ATTR_CREDS
0x80000080
pBuffer 参数包含指向指定客户端凭据的 SecPkgContext_ClientCreds 结构的指针。

客户端凭据可以是用户名和密码,也可以是用户名和密码和智能卡 PIN。

仅在服务器上支持此属性。

SECPKG_ATTR_CREDS_2
0x80000086
pBuffer 参数包含指向指定客户端凭据的 SecPkgContext_ClientCreds 结构的指针。

如果客户端凭据是用户名和密码,则缓冲区是打包 KERB_INTERACTIVE_LOGON 结构。

如果客户端凭据是用户名且智能卡 PIN,则缓冲区为打包KERB_CERTIFICATE_LOGON结构。

如果客户端凭据是联机标识凭据,则缓冲区是封送 SEC_WINNT_AUTH_IDENTITY_EX2 结构。

此属性仅在 CredSSP 服务器上受支持。

Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 不支持此值。

SECPKG_ATTR_NEGOTIATION_PACKAGE
0x80000081
pBuffer 参数包含指向 SecPkgContext_PackageInfo“>SecPkgContext_PackageInfo 结构的指针,该结构指定由 Microsoft Negotiate 提供程序协商的身份验证包的名称。
SECPKG_ATTR_PACKAGE_INFO
10
pBuffer 参数包含指向 SecPkgContext_PackageInfo“>SecPkgContext_PackageInfo 结构的指针。

返回有关正在使用的 SSP 的信息。

SECPKG_ATTR_SERVER_AUTH_FLAGS
0x80000083
pBuffer 参数包含指向SecPkgContext_Flags结构的指针,该结构指定有关当前安全上下文中的标志的信息。

此属性仅在客户端上受支持。

SECPKG_ATTR_SIZES
0x0
pBuffer 参数包含指向SecPkgContext_Sizes结构的指针。

查询每条消息函数和身份验证交换中使用的结构的大小。

SECPKG_ATTR_SUBJECT_SECURITY_ATTRIBUTES
124
pBuffer 参数包含指向SecPkgContext_SubjectAttributes结构的指针。

此值返回有关连接的安全属性的信息。

此值仅在 CredSSP 服务器上受支持。

Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 不支持此值。

[out] pBuffer

指向接收属性的结构的指针。 结构类型取决于 ulAttribute 参数的值。

返回值

如果函数成功,则返回SEC_E_OK。

如果函数失败,可能会返回以下错误代码。

返回代码/值 说明
SEC_E_INVALID_HANDLE
0x80100003
函数失败。 phContext 参数指定不完整上下文的句柄。
SEC_E_UNSUPPORTED_FUNCTION
0x80090302
函数失败。 ulAttribute 参数的值无效。

注解

pBuffer 参数指向的结构因查询的属性而异。

虽然调用方必须分配 pBuffer 结构本身,但 SSP 会分配保存 pBuffer 结构的可变大小成员所需的任何内存。 SSP 分配的内存必须通过调用 FreeContextBuffer 函数来释放。

注意

sspi.h 标头将 QueryContextAttributes 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 sspi.h (包括 Security.h)
Library Secur32.lib
DLL Secur32.dll

另请参阅

CERT_CONTEXT

FreeContextBuffer

SSPI 函数

SecPkgContext_ClientCreds

SecPkgContext_Sizes