在接下来的系列文章中我们正是讨论关于身份认证的主题。在前面我们已经谈到了,WCF中的认证属于“双向认证”,既包括服务对客户端的认证(以下简称客户端认证),也包括客户端对服务的认证(以下简称服务认证)。客户端认证和服务认证从本质上并没有什么不同,无非都是被认证一方提供相应的用户凭证供对方对自己的身份进行验证。我们先来讨论服务认证,客户端认证放在后续的文章中。
在《从两种安全模式谈起》中,我们对TLS/SSL进行了简单的介绍。我们知道,客户端和服务在为建立安全上下文而进行的协商过程中会验证服务端的X.509证书如否值得信任。对于服务证书的验证实际上可以看成是一种服务认证,或者说TLS/SSL对证书的验证可以看成是WCF服务认证的一个环节。
目录
TLS/SSL与X.509证书
创建基于TLS/SSL的WCF服务
创建X.509证书
服务寄宿
服务调用
改变证书认证模式
TLS/SSL是实现Transport安全模式的一种主要的方式,但不是唯一方式。对于所有基于HTTP的绑定(主要指BasicHttpBinding、WSHttpBinding和WS2007HttpBinding,而WSDualHttpBinding不支持Transport安全模式),如果选择了Transport或者Mixed安全模式,不论采用怎样的认证方式,底层的实现总是基于TLS/SSL(HTTPS)。
而对于NetTcpBinding来说,如果采用Transport安全模式,并且采用非Windows认证(客户端凭证类型选择None或者Certificate),最终的传输安全的实现也是基于TLS/SSL(SSL Over TCP)。如果选择Mixed安全模式,不论选择怎样的客户端凭证类型,WCF最终都会采用TLS/SSL来提供对传输安全的实现。也正是因为如此,在这两种情况下,你总是需要选择一个X.509证书作为服务的凭证。举个例子,对于如下的配置,终结点采用NetTcpBinding绑定,并且选择Transport安全模式,但是却采用匿名的认证方式(客户端凭证类型为None)。
>
>
>
>
/>
>
>
>
>
>
>
/>
>
>
>