2010-09-28 171 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

相關問題