2009-01-08 57 views
37

我有一個在開發中使用basicHttpbinding的WCF服務。爲我的WCF服務啓用SSL

現在在產品中我們想要使用SSL,我只需要做什麼改變來強制SSL連接?

+0

這裏回答:希望它有幫助 http:// stackoverflow。com/questions/2904883所以,「傳輸」的安全模式表示SSL是什麼意思?如何使用wcf-only-basichttpbinding-ssl-and-basic-authentication-in-ii – user3607430 2014-05-06 09:15:43

回答

43

MSDN上的這個頁面解釋了WCF綁定安全性。

http://msdn.microsoft.com/en-us/library/ms729700.aspx

的basicHttpBinding的類 主要用於與 現有的Web服務進行互操作,以及許多 這些服務是通過互聯網 信息服務(IIS)託管。 因此,針對此綁定的傳輸安全 旨在與 與IIS 站點進行無縫互操作。這是通過將 安全模式設置爲傳輸,然後將 設置爲客戶機憑證類型來完成的。 憑證類型值對應於IIS目錄安全機制的 。 以下代碼顯示了設置模式 並將憑據類型設置爲 。當客戶端和 服務器位於同一個Windows域上時,您可以使用此配置 。

C#

BasicHttpBinding b = new BasicHttpBinding(); 
b.Security.Mode = BasicHttpSecurityMode.Transport ; 
b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows; 

或者,在配置:

<bindings> 
    <basicHttpBinding> 
      <binding name="SecurityByTransport"> 
       <security mode="Transport"> 
       <transport clientCredentialType="Windows" /> 
       </security> 
      </binding> 
    </basicHttpBinding> 
</bindings> 

啓用SSL,無需登錄,設置clientCredentialType爲 「無」。爲安全模式

選項包括:

無,運輸,信息,TransportWithMessageCredential和TransportCredentialOnly

您可以找到更多的細節:http://msdn.microsoft.com/en-us/library/system.servicemodel.basichttpsecuritymode.aspx

+5

? – Blankman 2009-01-08 21:34:41

0

我認爲,如果在你的「綁定」在那裏你有<Security mode="Transport">,如果你將它改爲<security mode="None">,你會沒事的。

這是我正在研究的代碼庫的一個副本,我在代碼中做了這件事,而且它似乎正在工作。我至少得到了WSDL當我打的服務,如果這有助於在所有:)

BasicHttpBinding basicBinding = new BasicHttpBinding(); 
if (RegistryConnectionStringFactory.UseSslForCommunications) 
{ 
    basicBinding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential; 
    basicBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName; 
} 
else 
{ 
    basicBinding.Security.Mode = BasicHttpSecurityMode.None; 
    basicBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName; 
} 
1

我剛剛遇到了同樣的問題,發現這個MSDN文章: How to: Configure an IIS-hosted WCF service with SSL 在文章,你會發現結束WebConfig文件的xml配置。

該解決方案對我來說工作得很好。還有一件事要說,請記住,您需要一個REAL證書才能發佈!