2008-10-24 72 views
2

這是一個關於此question的後續。我試圖避免使用x509證書方法,因爲這會使我的客戶端安裝更復雜。如果basicHttpBinding不是唯一的選項,那麼其他綁定方法的示例在哪裏。basicHttpBinding是否將.Net 2.0客戶端連接到WCF服務的唯一選項?

我的客戶端在.Net 2.0上,我沒有訪問System.ServiceModel命名空間的權限,因爲直到3.0版纔出現。

更新:要明確, 客戶:NET 2.0, Web服務:.NET3.5/WCF

回答

3

問題不是不匹配介於.Net 2.0服務和WCF以及各種綁定之間 - 它們(有幾個值得注意的例外,在你的情況下不應該是個問題)兼容的協議。

WSE 3.0(運行於2.0 .Net框架)非常接近。你可以用basicHttpBinding或者wsHttpBinding和一些調整來使用它。 'Jimmy'Skowronski的文章here和MSDN文章here涵蓋了大部分基礎知識。

您也可以編寫自定義綁定,可以讓你一邊一步WSE和WCF之間的一些不兼容(如使用WCF和基本身份驗證時的任期安全運輸)

你的問題,我的理解是如何管理身份驗證 - 在您之前的問題中,您排除了Windows身份驗證。 Kerberos同時適用於WCF或WSE,但這更加複雜。

除非您深入瞭解您自己的身份驗證方案,您(據我所知)僅限於使用基本身份驗證(因此每個客戶端都提供用戶名或密碼,這對所有客戶端而言可能相同,具體取決於您的需要)或基於證書的認證。

Toran的答案是使用基本身份驗證的一個很好的入門者。

我想也許一個好方法是首先從.Net 2.0(和WSE *)方面考慮需求 - 建立一個適合客戶端部署的身份驗證機制,然後研究如何接受使用WCF進行認證。

WCF可以接受幾乎任何WSE 3.0可以發送(與我能想到把我的頭被尋址規範的版本頂部唯一的例外,有的稍微更嚴格的安全要求)

1

您可能需要SSL +用戶名/密碼與basicHttp。

首先下面是您的客戶端將在.NET 2.0中使用您的WCF服務的身份驗證。

Dim client As WebServiceClient = New WebServiceClient("basicHttpWebService") 
client.ClientCredentials.UserName.UserName = "username" 
client.ClientCredentials.UserName.Password = "password" 

接下來,爲您的WCF服務要求SSL +會員提供憑據

 <bindings> 
      <basicHttpBinding> 
       <binding name="basicHttp"> 
        <security mode="TransportWithMessageCredential"> 
         <transport/> 
         <message clientCredentialType="UserName"/> 
        </security> 
       </binding> 
      </basicHttpBinding> 
     </bindings> 
     <behaviors> 
      <serviceBehaviors> 
       <behavior name="NorthwindBehavior"> 
        <serviceMetadata httpGetEnabled="true"/> 
        <serviceAuthorization principalPermissionMode="UseAspNetRoles"/> 
        <serviceCredentials> 
         <userNameAuthentication userNamePasswordValidationMode="MembershipProvider"/> 
        </serviceCredentials> 
       </behavior> 
      </serviceBehaviors> 
     </behaviors> 

我不知道的是,要使用第一部分中的客戶端應用程序的唯一一個示例配置您可能需要安裝WCF/WPF擴展CTP,因爲我通常右鍵單擊並「添加服務引用」而不是ASMX「添加Web引用」 - 如果是這樣的話,VS2005的這個擴展確實需要安裝.NET 3.0。但用一個簡單的「添加Web引用」,你應該仍然可以輸入用戶名/密碼......我只是不知道這個vb/c#會是什麼樣子......