簡體   English   中英

從WCF服務訪問客戶端證書屬性

[英]Access client certificate properties from WCF Service

我正在編寫一個WCF服務,我需要訪問用於連接服務的客戶端證書的哈希代碼。

我正在尋找一個類似於ASP.NET 2.0天的Request.ClientCertificate的屬性或方法,但找不到任何允許輕松訪問客戶端證書的東西。

我們的服務設置為使用basicHttpBinding和“Transport”安全模式運行SSL。

IIS已設置為“需要SSL”和“接受證書”。

需要注意的一點是,用於保護端點的服務器證書來自與客戶端證書不同的CA.客戶端證書僅通過自定義代碼進行驗證(因此需要獲取連接的哈希碼)證書)。

我已經創建了IDispatchMessageInspector的自定義實現,以查看是否可以從那里訪問客戶端證書,但無濟於事。

有人試過這個並且之前有過成功嗎?

看起來您最好的選擇是為您的服務實現自定義證書驗證器。 這基本上是一個派生自X509CertificateValidator的類,然后通過配置文件注冊

有關如何在本文中執行此操作的更完整信息。

如果有其他人嘗試應用客戶端證書身份驗證,則需要以下步驟才能使其工作(我們在WCF中為此實例使用basicHttpBinding並在IIS的本地實例中運行):

  1. 設置IIS以使用站點的HTTPS綁定,並使用服務器證書在IIS中保護它
  2. 在IIS中,將站點的SSL設置更改為需要SSL並要求客戶端證書(必須是要求 - 接受將不起作用)
  3. 在WCF配置中修改basicHttpBinding並將安全模式設置為“Transport”並將transportCredentialType設置為“Certificate”

確保根證書(用於創建任何客戶端證書的證書)位於運行IIS的本地計算機的“受信任的根證書頒發機構”中。

注意如果您在開發環境中,可能需要生成自己的根證書,那么makecert命令行應用程序對此非常有用; 只需運行以下命令:makecert -n“CN = My Test Auth”-r -cy authority -a sha1 -sv“My Private Key.pvk”TestAuth.cer

這將創建名為TestAuth.cer的證書(需要將其添加到計算機的“受信任的根證書頒發機構”)和名為“My Private Key.pvk”的私鑰文件。

現在要生成客戶端證書,您可以運行以下命令:makecert -a sha1 -n“CN = myConnectionCert”-ic“TestAuth.cer”-iv“My Private Key.pvk”-ss My

這創建了一個myConnectionCert主題的證書,並將其添加到您的個人證書存儲區 - 當您現在訪問該站點時(例如,查看服務頁面),IE應該提示您選擇證書 - 選擇您剛剛創建的證書和你應該正常看到服務頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM