2011-05-27 63 views
3

我目前正在設計和開發將由移動設備使用的WCF 4 RESTful服務。我特別選擇了REST,因爲它應該是輕量級的,JSON輸出使得移動客戶端的解析變得簡單。如何在WCF 4 RESTful服務上進行身份驗證?

該服務負責整個應用程序的移動設備部分。但是,它要求用戶在使用該服務之前登錄。基本的HTTP身份驗證不是一個選項:它不安全,中間人攻擊可以輕鬆攔截用戶帳戶。 SSL是一種選擇,但我不知道SSL在WCF RESTful服務上的工作方式以及在移動設備上實現的簡單程度。

我已經研究過Digest Authentication,但是我無法找到任何有關如何實現它的好信息。這也帶來了:我將如何讓用戶使用它添加設備到他們的帳戶?將用戶名/密碼組合與其他信息一起散列到摘要標題中?

有人可以對此有所瞭解嗎?因爲我很困惑。網絡上有很多關於如何實現WCF(RESTful)服務的信息,但是當你需要保護它時,信息量顯着下降......文章是受歡迎的。

+0

這是複製嗎? http://stackoverflow.com/questions/6021612/wcf-restful-web-services-and-custom-authentication – ale 2011-05-27 17:32:47

回答

2

利用SSL在WCF中大腦簡單,現在應該受到每個移動平臺的支持。你應該明確地使用SSL進行基本身份驗證,以儘可能簡化你的生活恕我直言。

所有你需要做的啓用HTTPS的WCF服務是:

<webHttpBinding> 
    <binding name="MyBinding"> 
     <security mode="TransportCredentialOnly"> 
      <transport clientCredentialType="Basic" /> 
     </security> 
    </binding> 
</webHttpBinding> 

那會說:「只允許通過安全傳輸訪問該服務,並期待着基本身份驗證憑據傳遞」。

現在,唯一的問題是,你在哪裏託管你的WCF服務?如果在IIS中託管,您只需要使用它配置服務證書,並且您已完成設置。

另一種選擇是先用F5設備或類似的東西做SSL。然後,您必須做更多的工作,因爲默認情況下,WCF不會讓您通過非安全傳輸方式的保證。然後,您需要進入自定義綁定並在TransportSecurityBindingElement上設置AllowInsecureTransport = true。這基本上說WCF會「相信我,我正在做正確的事情」,並允許服務初始化財產,即使憑證將流經非安全綁定。

+0

這個想法是從IIS內部託管服務。我目前正在使用不支持SSL的ASP.NET開發服務器進行開發。不過,明天我會抽出一個測試服務+移動客戶端,看看它是否有效。我將生成自己的證書,將其導入到我的手機中並將其鏈接到IIS中。 – Toolmaker 2011-05-29 16:33:59

+0

這是怎麼解決的? – 2011-06-10 16:09:07

+0

@Toolmaker爲你工作嗎? – 2013-06-28 13:50:17