我調查創造一個現有的asp.net應用程序一個WCF REST服務,通過各種客戶端,包括Windows Phone 7的,Android設備,iPhone應用程序等會員/授權通過REST服務
創建一個簡單的消耗WCF REST服務和從上述平臺上使用它不是問題,並且工作得很好。我正在努力爭取我的頭腦是授權。
該asp.net應用程序使用成員資格提供程序來提供身份驗證和授權,我很樂意從REST服務使用該API。
如何保護我的REST服務,以便第一次調用必須進行身份驗證(傳遞用戶名和密碼),並且以下調用知道誰已登錄。我猜測認證方法將不得不傳回某種令牌,以便在隨後的調用中識別調用者。這是否足夠安全,因爲整個站點/服務都通過SSL?
歡迎任何建議。
我認爲我更喜歡令牌方法,而不是在每個請求上發送用戶名和密碼。我知道這不是嚴格的RESTful,因爲我將不得不維持狀態,但在這種情況下,我很樂意接受這種狀態。 – DavidGouge 2011-03-24 23:03:02
我看不出爲什麼你說這個令牌(即,如果我瞭解你,在cookie中的會話ID)更好。它使你的應用程序有狀態,這是絕對不安寧的,讓客戶的生活更難,不是更安全(比較會話劫持),讓服務器的生活變得更難(負載平衡在狀態滿的應用程序中要困難得多)......你能詳細說明你爲什麼認爲它更好? – 2011-03-25 06:59:34
其實我並不是故意將會話ID放入cookie中,而是在頭中加入一些加密的令牌。這不會改變REST的無狀態特性。因爲你不需要在每個請求中發送密碼,所以它會降低密碼被盜的可能性。它也允許SSO場景:用戶已登錄到需要調用REST調用的應用程序,因此應用程序使用加密的令牌而不是密碼。實際上登錄後從未使用密碼。 – Tarlog 2011-03-25 09:25:12