2012-01-11 116 views
1

我正在創建一個Web服務,該服務將由世界上另一個地方的單個客戶端使用。我沒有對他們所使用的技術的任何知識或控制,但已被要求WCF 4 Web服務中的UsernameToken和SSL

「使用SSL傳輸過程中的信息進行加密,並使用用戶名令牌 客戶端身份驗證」

我打算使用WCF4創建服務,並且知道如何設置這一切。然而,我努力尋找綁定的正確配置等。Google給了我很多關於WSE 3.0的結果,但我很確定(如果我錯了,請糾正我)我不應該使用WSE作爲WCF服務。

This文章最初似乎建議我應該使用自定義綁定,但也說我應該「考慮使用WCF系統定義的綁定與適當的安全設置,而不是創建自定義綁定」。但是我看不到這應該是什麼的例子。

如果有人能指出我正確的方向,我將不勝感激。

tl; dr:什麼是WCF4配置設置來支持SSL和UsernameToken?

回答

4

看看WsHttpBinding。您可以使用TransportWithMessageCredential的安全模式來使用SSL和UserName的消息憑證。如果您在IIS中託管,則在那裏設置SSL。

您可以在config中設置綁定,如下所示。

<bindings> 
    <wsHttpBinding> 
    <binding name="secureBinding"> 
     <security mode="TransportWithMessageCredential"> 
     <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> 
     <message clientCredentialType="UserName" negotiateServiceCredential="false" establishSecurityContext="false" /> 
     </security> 
    </binding> 
    </wsHttpBinding> 
</bindings> 

然後,您可以使用此綁定配置如下

<services> 
    <service name="ServiceName"> 
    <endpoint address="" binding="wsHttpBinding" contract="ContractType" bindingConfiguration="secureBinding" /> 
    </service> 
</services> 

這兩種元素在配置的system.serviceModel元素的兒童。

+2

http://msdn.microsoft.com/en-us/library/ms733836.aspx對您可以在傳輸和消息級別使用的各種憑證類型有很好的概述。 「服務憑證的談判模型」部分值得一讀。在上面的示例中,我已將negotiateServiceCredential和establishSecurityContext屬性設置爲false,這可能不適合您的方案。 – 2012-01-12 04:19:54

+0

偉大的東西馬特,謝謝 – barrylloyd 2012-01-12 05:39:57