结束了服务认证的介绍之后,我们接着介绍WCF双向认证的另一个方面,即服务对客户端的认证,简称客户端认证。客户端认证采用的方式决定于客户端凭证的类型,内容只要涉及基于以下三种典型客户凭证类型的认证:Windows、用户名和X.509证书。从编程的角度来讲,Windows认证是最为简单的认证方式。在这种认证方式下,客户端进程运行的Window帐号对应的Windows凭证被自动作为调用服务的客户端凭证,所以无需显示指定具体的Windiws凭证。
如果需要另一个Windows帐号的名义调用服务,客户端就需要通知指定Windows帐号和密码的方式显式地进行客户端Windows凭证的设置。Windows凭证在WCF通过类型WindowsClientCredential表示。下面给出了WindowsClientCredential的定义,从中我们可以看到真正的凭证最终保存在类型为NetworkCredential的ClientCredential属性中。通过该属性,你可以指定Windows凭证的域名、用户名和密码。
class WindowsClientCredential
2: {
//其他成员
bool AllowNtlm { get; set; }
public NetworkCredential ClientCredential { get; set; }
6: }
class NetworkCredential : ICredentials, ICredentialsByHost
8: {
//其他成员
string Domain { get; set; }
string UserName { get; set; }
string Password { get; set; }
public SecureString SecurePassword { get; set; }
14: }