ICertRequest3::SetCredential 方法 (certcli.h)

SetCredential 方法设置用于联系证书注册 Web 服务的凭据。

语法

HRESULT SetCredential(
  [in] LONG                    hWnd,
  [in] X509EnrollmentAuthFlags AuthType,
  [in] BSTR                    strCredential,
  [in] BSTR                    strPassword
);

参数

[in] hWnd

父窗口的句柄。

必须设置提供 UI 的 hWnd 参数才能获取凭据。

对于基于证书的授权,如果需要 UI 提示来获取凭据,例如,如果凭据位于智能卡并且需要固定提示,则使用句柄。

使用 Kerberos、匿名或用户名和密码身份验证时,将忽略此参数。

[in] AuthType

指定身份验证类型的 X509EnrollmentAuthFlags 枚举的值。

含义
X509AuthAnonymous
匿名身份验证。

strCredentialstrPassword 参数设置为 NULL 或空字符串。

X509AuthCertificate
本地计算机上安装的客户端身份验证证书。 证书包含与私钥关联的公钥, (证书) 不包含。 服务器使用该证书来验证客户端的身份。

strCredential 参数包含要传递给证书注册 Web 服务以对调用方进行身份验证的证书的二进制 20 字节 SHA-1 哈希。 将 strPassword 参数设置为 NULL 或空字符串。 strCredential 参数必须引用安装在相关个人证书存储中的证书,并且它必须具有调用方可访问的关联私钥。

X509AuthKerberos
Kerberos 身份验证。

strCredentialstrPassword 参数设置为 NULL 或空字符串。

X509AuthUsername
纯文本用户名和密码身份验证。 用户名和密码存储在客户端的凭据保管库中时,会对其进行加密。

strCredentialstrPassword 参数包含证书注册 Web 服务支持的用于对调用方进行身份验证的用户名字符串和纯文本密码。 由于注册服务连接始终使用 安全套接字层协议 (SSL) ,因此通过网络发送密码时会加密。

[in] strCredential

包含凭据的字符串。

[in] strPassword

包含密码的字符串。

返回值

返回代码 说明
E_INVALIDARG
AuthType 参数必须为 X509AuthKerberos

注解

在调用 ICertRequest2::Submit 方法之前,必须调用 SetCredential 方法。

strCredentialstrPassword 参数根据 AuthType 参数中指定的值而更改,如下表所示。

AuthType 参数 strCredential 参数 strPassword 参数
X509AuthAnonymous NULL NULL
X509AuthCertificate 证书的 20 字节 SHA-1 哈希 (指纹) NULL
X509AuthKerberos NULL NULL
X509AuthUsername 证书注册 Web 服务识别的纯文本用户名 与用户名关联的纯文本密码

要求

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

另请参阅

CCertRequest

ICertRequest3