WCF分布式开发常见错误(22):The caller was not authenticated...如何在XP系统为WCF设置可信任的证书
我在XP 专业版系统进行WCF安全编程的时候,遇到的错误。使用的安全验证 方式是: UserName and Password Security 绑定协议:.WSHTTPBinding。我 会把如何在XP环境下设置可信证书的过程,详细的描述出来。因为这个错误就是 和证书有直接关系,对于很多XP环境下进行WCF编程的学习者来说,应该有不错 的参考价值。错误信息:The caller was not authenticated by the service 。服务验证调用者失败。XP系统配置证书还似乎比较麻烦,你像Windows服务器 系列,我们可以建立CA来控制证书的状态。虽然我们可以自己安装。但是过于麻 烦。正如申请一个免费的证书一样。仅仅为了个人学习,一切都希望简单,快速 地学习WCF的安全编程。我这里也是使用了makecert制作的证书。
设置了服务器证书,消息安全模式。 我搜索的资料。如下:
The caller was not authenticated by the service - WCF Security using ...
The caller was not authenticated by the service
Caller was not authenticated by the service
WCF - The caller was not authenticated by the service
WCF - TCP+Cert "The caller was not authenticated by the service." 但是没什么帮助,类似的问题很多都是没有解决。问题我也放到WCF中文和英文 论坛:
http://social.microsoft.com/Forums/zh-CN/wcfzhchs/thread/cd3f0247- a1b4-43c0-af1c-7b0e609b1e3b
http://social.microsoft.com/Forums/zh-CN/wcf/thread/3a5417c6-fdd1- 47d7-9757-ebc8ede7affb。
【1】问题描述:错误信息的截图:
一样采用UserNamePasswordValidator验证方式。wsHttpBinding,此绑定支 持WS安全规范。必须启动服务端证书。 WCF分布式开发常见错误(21):unable to open its IChannelListener.分发器未能打开侦听器 ,已经遇到过一次了问题。 当时导致错误的原因是没有启用服务端证书。 这个错误修正完毕以后,再次启 动服务,添加服务引用,生成了客户端代理等相关文件。 服务行为的证书配 置信息如下:
<serviceBehaviors>
<behavior name="WCFService.WCFServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
<serviceCredentials>
<serviceCertificate x509FindType="FindBySubjectName" findValue="MyServer" storeLocation="CurrentUser"/>
<clientCertificate >
<authentication certificateValidationMode="None" />
</clientCertificate>
<userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="WCFService.MyUserNamePasswordVali dator,WCFService" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
这句话就是服务端查询证书的依据:<serviceCertificate x509FindType="FindBySubjectName" findValue="MyServer" storeLocation="CurrentUser"/>。在CurrentUser位置,查找主题为 MyServer的证书。
使用x509证书是符合WS安全规范。证书是非对称加密算法的典型应用。至于 如何获得非对称加密、证书,我在之前的系列文章里已经详细讲过,需要的话可 以再参考:WSE3.0构建Web服务安全(2):非对称加密、公钥、密钥、证书、签名 的区别和联系以及X.509 证书的获得和管理