2012-07-25 127 views
0

我有WCF服務設置爲消息安全模式:WCF客戶端配置中是否需要證書encodedValue?

<security mode="Message"> 
    <message 
     clientCredentialType="UserName" 
     negotiateServiceCredential="true" 
     establishSecurityContext="true" 
     algorithmSuite="Default" /> 
</security> 
... 
<behaviors> 
    <serviceBehaviors> 
     ... 
     <serviceCredentials> 
     <serviceCertificate findValue="my Certifiacate ..."/> 
     </serviceCredentials> 

和服務證書在serviceBehaviors部分給出。

當VS創建客戶端(.NET)(通過添加服務引用)時,它會在web.config中創建元素。

我發現客戶端即使在此部分爲空時也可以成功連接服務。我的猜測是客戶端使用服務證書的編碼值來加密消息。但是當配置中沒有指定編碼值時,它也可以工作?那麼目的是什麼?

+0

奇怪的是,我不得不說我們的服務配置像在我的答案故障時,服務器證書失蹤了。 – albertjan 2012-07-25 08:23:25

+0

@the_ajp你誤解了我的問題。我說的是,它在客戶端配置部分爲空時起作用 – jlp 2012-07-25 08:41:19

+0

我的意思是說我們的客戶端缺少服務器證書配置將失敗。 – albertjan 2012-07-25 08:43:01

回答

0

它只在您的wcf config中指定要在綁定中使用加密時進行加密。

<wsHttpBinding> 
    <binding> 
    <security mode="Message"> 
     <transport clientCredentialType="Windows" proxyCredentialType="None" 
     realm="" /> 
     <message clientCredentialType="Certificate" negotiateServiceCredential="true" 
     algorithmSuite="TripleDesSha256Rsa15" establishSecurityContext="true" /> 
    </security> 
    </binding> 
</wsHttpBindings>