2010-09-28 96 views
2

继续使用WCF重新设计Web服务体系结构,我们的团队一直在讨论我们如何公开端点。例如:我有一个标准的端点,所有用户都可以使用正确的令牌,但我也有一些端点将使用证书安全性。所有端点最终都会使用相同的实现,所以这实际上只是进入系统的不同方式。公开WCF服务中多个客户端特定端点的最佳实践?

证书端点必须指向商店中的特定证书,因此仅适用于一个特定客户端。我们的想法是,我们的标准服务可能会生活在http://mysite.com/MyService.svc,证书端点将会是http://mysite.com/MyService.svc/Acme。这里所关心的是我有效地将我们的客户列表放入我们的WSDL中,这是不可取的。

这里最好的做法是什么?有没有办法通过单个证书端点引导多个客户端并在代码端获得证书(我们如何知道我们正在处理的客户端没有特定的端点)?什么是隐藏客户名单的最佳方式?有没有更好的解决方案我没有看到?

回答

0

您不需要为每个客户端创建单独的端点。使用基于客户端证书的身份验证创建单个端点,并使用您自己的身份验证逻辑实施您自己的X509CertificateValidator。看

 <behavior name="CertBeh"> 

      <serviceCredentials> 

       <clientCertificate> 

        <authentication certificateValidationMode="PeerTrust" /> 

       </clientCertificate> 

      </serviceCredentials> 

     </behavior> 

PeerTrust告诉WCF如果客户提供的证书是在TrustedPeople店:

1

配置您的服务行为。所以,把所有的客户证书放在你的服务所在的盒子里的商店,你会没事的。有关其他可能的选项,请参阅this article