http協議是無狀態的, 瀏覽器和web服務器之間可以通過cookie來身份識別。 桌面應用程序(比如新浪桌面客戶端, skydrive客戶端)跟Web服務器之間是如何身份識別呢?
什么是HTTP基本認證
桌面應用程序也通過HTTP協議跟Web服務器交互, 桌面應用程序一般不會使用cookie, 而是把 "用戶名+冒號+密碼"用BASE64編碼的字符串放在http request 中的header Authorization中發送給服務端, 這種方式叫HTTP基本認證(Basic Authentication)。
TTP基本認證的過程
第一步: 客戶端發送http request 給服務器,。
第二步: 因為request中沒有包含Authorization header, 服務器會返回一個401 Unauthozied 給客戶端,並且在Response 的 header "WWW-Authenticate" 中添加信息。
第三步:客戶端把用戶名和密碼用BASE64編碼后,放在Authorization header中發送給服務器, 認證成功。
第四步:服務器將Authorization header中的用戶名密碼取出,進行驗證, 如果驗證通過,將根據請求,發送資源給客戶端。
注意:http協議是無狀態的, 同一個客戶端對 服務器的每個請求都要求認證
HTTP基本認證和HTTPS
把 "用戶名+冒號+密碼" 用BASE64編碼后的string雖然用肉眼看不出來, 但用程序很容易解密。 所以這樣的http request 在網絡上,如果用HTTP傳輸是很不安全的。 一般都是會用HTTPS傳輸, HTTPS是加密的, 所以比較安全。
OAuth 對於Http來說,放在Authorization header中的不是用戶名密碼, 而是一個token。