簡體   English   中英

RESTful WCF 4服務中移動客戶端的用戶身份驗證

[英]User authentication for mobile clients in RESTful WCF 4 service

我正在嘗試開發一個由移動客戶端(iOS客戶端,現在)使用的Web服務,我讀到RESTful服務比SOAP服務輕得多,所以我想試試這個。

大多數方法都需要身份驗證,但我不知道如何處理這個問題,因為我讀REST應該是無狀態的,所以如何驗證從iOS訪問服務的用戶然后使用該身份驗證來驗證對其他人的連續調用網絡方法?

注意:我將在IIS上使用WCF 4的WebHttp

謝謝!

這樣做有很多相當成熟的模式。

  • 最簡單的方法是提供用戶名:密碼作為Authorization標頭或請求的一部分(查詢字符串/表單數據)。 這將要求您在每次通話時對用戶進行身份驗證/授權。 或許對你不太理想,但是如果你正在使用WebHttp(如果你不是這個意思,我會認真看看WCF Web Api ),在WCF中構建HttpModule或其他東西會相當容易通道堆棧攔截呼叫並驗證用戶。
  • 一種非常常見的方法是公開一個獲取user:password並生成API令牌的端點。 然后,用戶獲取該API令牌並使用它來驗證后續調用。 該令牌可以是從弱加密數據到由共享密鑰,HTTP動詞,請求資源等組成的散列中的任何內容。如果您使用谷歌“HMAC身份驗證”,您將找到幾個這樣的示例。 Azure的身份驗證方案是一個非常精細的令牌的示例。 這種方法的好處在於,您有一個關注身份驗證和構建令牌的端點,而您的其他端點只需要知道如何驗證哈希或解密令牌; 一個很好的關注點分離。
  • 如果您希望API的使用者成為第三方應用程序,OAuth / OAuth2幾乎是事實上的標准。

我建議使用類似於OAuth的策略。 您可以專門編寫一個服務來驗證憑據並分發訪問令牌,並且對API的任何請求都需要有效的訪問令牌。

如果您在IIS中托管,我在使用HttpModule檢查所有傳入請求以獲取有效令牌之前已完成此操作。 如果沒有,則模塊僅使用401 Unauthorized Http狀態代碼結束請求。

編輯:

如果您希望在每個操作的基礎上進行更細粒度的授權,我建議您使用自定義授權策略。 有關更多詳細信息,請訪問http://msdn.microsoft.com/en-us/library/ms731181.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM