2011-10-18 110 views
1

我正在開發一個產品,該產品包含一個WCF服務和部署到不同位置的多個WCF客戶端。爲了保證服務的安全,我將WCF配置爲通過證書使用消息安全。WCF消息安全性繼續使用刪除的證書

具體而言,這些都是我的服務配置文件: Web.configApp.config

這是工作的罰款,據我所知,即使在證書存儲在智能卡(WCF甚至會彈出一個對話框,詢問我輸入智能卡的PIN碼以解鎖證書)。

但是在初始安全協商發生後刪除SmartCard對連接沒有任何影響 - 我仍然可以調用Web服務上的方法。

發生了什麼事?

  • 是否WCF消息安全工作類似於HTTPS,其中在初始安全協商,之後建立了對稱密鑰,證書不再需要?

  • 或者是否可以將服務設置爲僅使用證書來驗證客戶端,但消息根本不加密?

回答

3

這是因爲您的安全配置使用安全上下文(默認爲WsHttpBinding)。安全上下文(實現WS-SecureConversation)確實與HTTPS類似。它僅將證書用於初始身份驗證並生成安全令牌,用於保護來自同一服務代理實例的以下通信。上下文被建立爲服務代理實例,並且它也建立了超時主題的WCF會話。

+0

聲音合乎邏輯,但我有一個觀察要補充的是:如果我使用具有受密碼保護的私鑰的證書,則客戶端*仍然*驗證 - 不詢問密鑰(並且我沒有將它保存在證書商店)。我想知道這是可能的。 – Cygon

0
<security mode="Message"> 
    <message clientCredentialType="Certificate" negotiateServiceCredential="false" establishSecurityContext="false" /> 
    </security> 

嘗試establishSecurityContext設置爲false。

相關問題