2011-02-09 84 views
1

看來,基於Cookie的身份驗證是明確的選擇今天需要登錄憑據的Web服務。HTTP認證與餅乾

可是你知道,如果你正在開發一個Web服務,其中客戶端是不是瀏覽器,而是通過HTTP你可以使用HTTP認證或cookie認證訪問資源,客戶端軟件(如移動應用)?

HTTP驗證:

  • Web服務器處理身份驗證,因此,如果需要
  • 自動應用到非代碼資源(例如JPG,XML等)(端Q容易更改的Web應用程序平臺:是有沒有辦法與基於cookie的身份驗證來做到這一點)
  • 更難整合與服務器授權(的.htaccess/.htpasswd則)

cookie認證數據庫存儲的憑據:?

(代碼資源可以有不同的反應基於證書)
  • 控制會話過期(通過cookie的到期日)
    • 細粒度訪問控制
    • 在用戶登錄體驗完全控制

    其他什麼我要離開的考慮?任何其他優點/缺點?

    Some helpful discussion is here

  • +0

    如果有興趣在這兩種類型的身份驗證之間進行安全性閱讀此:http://stackoverflow.com/questions/5052607/cookies-vs-basic-auth/5052622#5052622 – 2011-04-29 15:47:53

    回答

    1

    隨着HTTP認證,代碼資源可以有不同的反應基於誰提出請求的用戶。用戶的名字通常通過HTTP頭傳遞給代碼。

    隨着HTTP認證,您仍然可以使用會話和有他們帶來同樣的好處。事實上,會話竊取是不是太大的問題了,因爲你可以測試存儲在會話的用戶是否是通過HTTP認證進行了認證一樣。出於同樣的原因,會話標識符不必是無法猜測的,因爲它們需要使用基於Cookie的身份驗證。

    +0

    好點。但是,你說「會話竊取」不是問題。你是指嗅探HTTP數據包並複製會話cookie?看起來,HTTP身份驗證同樣容易受到攻擊,因爲用戶:pass在[容易解碼的Base64](http://en.wikipedia.org/wiki/Basic_access_authentication)中傳輸。如果通過HTTP傳輸,竊取HTTP身份驗證憑證只會稍微困難一點。或者我不理解你的觀點? – jpeskin 2011-02-09 18:46:17

    0

    那麼,當客戶端是移動應用或東西是不是一個普通的瀏覽器,服務器應用程序仍然需要某種形式的會話跟蹤的。執行會話跟蹤的最簡單方法是使用某種「cookie」,標準HTTP cookie或自定義會話ID。所以,即使沒有使用標準的cookie機制,會話標識符實際上也是一個「cookie」。我總是將會話標識符分配給客戶端會話,所以我傾向於選擇Cookie身份驗證。

    0

    HTTP基本身份驗證是一場噩夢當密碼被泄露,因爲沒有辦法去改變它,而不首先改變所有legitmate客戶。您也無法強制單個用戶被取消身份驗證,並且傳輸身份驗證憑據的機制不安全(除非您將其封裝在https中)

    真的,您最好的選擇是使用基於cookie的系統,控制個人認證會話