[WCF安全系列]服务凭证(Service Credential)与服务身份(Service Identity)

[WCF安全系列]服务凭证(Service Credential)与服务身份(Service Identity)

ID:40588656

大小:37.50 KB

页数:7页

时间:2019-08-04

[WCF安全系列]服务凭证(Service Credential)与服务身份(Service Identity)_第1页
[WCF安全系列]服务凭证(Service Credential)与服务身份(Service Identity)_第2页
[WCF安全系列]服务凭证(Service Credential)与服务身份(Service Identity)_第3页
[WCF安全系列]服务凭证(Service Credential)与服务身份(Service Identity)_第4页
[WCF安全系列]服务凭证(Service Credential)与服务身份(Service Identity)_第5页
资源描述:

《[WCF安全系列]服务凭证(Service Credential)与服务身份(Service Identity)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、[WCF安全系列]服务凭证(ServiceCredential)与服务身份(ServiceIdentity)在采用TLS/SSL实现Transport安全的情况下,客户端对服务证书实施认证。但是在默认情况下,这种认证仅仅是确保服务证书的合法性(通过数字签名确保证书确实是由申明的CA颁发)和可信任性(证书或者CA证书存储于相应的可信赖存储区)。而WCF提供服务证书并不限于此,客户端对服务认证的模式应该是这样的:服务端预先知道了服务的身份,在进行服务调用之前,服务端需要提供相应的凭证用以辅助客户端确认调用的服务具有预先确定的身份。对于这样的服务认证模式,具有两个重要的概念,即服务凭

2、证和服务身份。目录:一、服务凭证(ServiceCredential)二、服务身份(ServiceIdentity)三、服务凭证协商(ServiceCredentialsNegotiation)一、服务凭证(ServiceCredential)认证就是通过对对方提供的凭证进行检验以确定对方身份的一个过程,从这个意义上讲服务认证和客户端认证并没有本质的区别。但有服务认证确实有一点和客户端认证不同:客户端在对服务进行认证之前就预先确定了服务应当具有的身份。而在真正进行服务调用的时候,客户端要求服务提供相应的凭证。而客户端根据这个凭证和实现确定的身份进行比较,从而确定当前正在调用的服

3、务正是自己希望调用的那个。通过上面一节的介绍,我们已经知道了客户端具有多种形式的凭证类型,但是服务凭证具有两种典型的类型:Windows凭证和X.509证书。服务凭证的类型决定了认证方式,所以服务认证通过Windows认证或者对X.509证书的检验来实现。而Windows认证具有两种具体的实现,即Kerberos和NTLM。通过前面对Kerberos和NTLM的介绍,你应该知道只有Kerberos支持双向认证,而NTLM则不能。因此,只有在基于域(Domain)的网络环境中,基于Windows认证的服务认证才是可行的。而在工作组(WorkGroup)环境中,我们推荐使用基于证书

4、的服务认证。服务认证方式的选择决定于客户端认证采用的方式,基本的策略是这样的:如果采用Windows认证的方式对客户端实施认证,服务认证同样采用Windows认证。基于X.509证书的认证在非Windows客户端认证下被采用。进一步地,如果客户端凭证类型为Windows,那么WCF采用执行服务寄宿进程的Windows帐号对应的Windows凭证作为服务凭证。如果其他非Windows凭证作为客户端凭证,你必须为服务显式地指定一个X.509证书作为服务凭证。这也是为何在前面演示的实例中,当NetTcpBinding采用Transport安全模式,客户端凭证被设置成None时,为何需

5、要为服务指定一个X.509证书作为服务凭证的原因。在WCF的应用编程接口中,具有一个重要的服务行为ServiceCredentials。这个类并不简单象它的名称所表示的那样用于进行服务凭证的设置,实际上需要在服务端执行的很多认证、授权行为都是通过ServiceCredentials(或者ServicePointManager的RemoteCertificateValidationCallback回调)来实现的。而在这里,我们暂时只关心如何通过ServiceCredentials为服务指定一个X.509证书作为服务凭证。关于这一点,已经在前面作过介绍了。如果服务采用基于X.509

6、证书作为服务凭证,客户端对服务的认证过程实际上分为两个阶段。第一个阶段是验证证书的合法性,在默认的情况下会采用ChainTrust认证模式,不过可以通过终结点行为ClientCredentials(或者ServicePointManager的RemoteCertificateValidationCallback回调)来设置不同的认证模式。关于具体对服务证书认证模式的设置在前面的实例演示(《TLS/SSL在WCF中的应用[SSLoverTCP]》和《TLS/SSL在WCF中的应用[HTTPS]》)中已经有过介绍了。当通过以第一阶段的认证之后,才会进入第二阶段的认证,即通过比较服务

7、证书和事先确立的服务身份信息进行对照进而确定服务是否是客户端试图访问的服务,接下来讨论关于服务身份的话题。二、服务身份(ServiceIdentity)我们知道终结点时WCF最为核心的概念,终结点通过类型ServiceEndpoint表示。终结点具有ABC三要素分别表示地址、绑定和契约,其中地址通过EndpointAddress表示。如果你对EndpointAddress有一定的了解,你应该清楚该类具有一个只读的Identity的属性,对应的类型为EndpointIdentity,相关定义如

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。