SunlightDB 安全策略(一)

dreamcode發表於2017-04-29
SunlightDB 安全策略之一——基於Token的身份驗證機制,已經在很多超大型網站中應用,比如Facebook,Twitter,Google,Github 等等,比起傳統的身份驗證方法,Token驗證擴充套件性更強,更安全,非常適合用在Web應用或者移動應用上。
傳統身份驗證方法
Cookie驗證是一種比較傳統的HTTP安全策略。Cookie驗證機制就是為一次請求認證在服務端建立一個Session物件,同時在客戶端的瀏覽器端建立了一個Cookie物件;通過客戶端帶上來Cookie物件來與伺服器端的Session物件匹配來實現狀態管理的。預設的,當我們關閉瀏覽器的時候,cookie會被刪除。但可以通過修改cookie 的過期時間使Cookie在一定時間內有效。
基於 Token 的身份驗證方法
使用基於Token的身份驗證方法,在服務端不需要儲存使用者的登入記錄。基本流程如下:
(1)客戶端使用使用者名稱密碼請求登入;
(2)服務端收到請求,驗證使用者名稱與密碼。驗證成功服務端簽發一個Token,再把這個Token傳送給客戶端;
(3)客戶端每次向服務端發起請求,都需要帶著服務端最新簽發的Token;

(4)服務端收到請求,驗證請求裡面的Token,如果驗證成功返回請求的資料。流程圖如下:


Token身份驗證的優勢
(1)支援跨域訪問:Cookie是不允許垮域訪問的,這一點對Token機制是不存在的,前提是傳輸的使用者認證資訊通過HTTP頭傳輸;
(2)更適用CDN:可以通過內容分發網路請求你服務端的所有資料,而你的服務端只要提供API即可;
(3)去耦:不需要繫結到一個特定的身份驗證方案。Token可以在任何地方生成,只要在你的API被呼叫的時候,你可以進行Token生成呼叫即可;
(4)更適用於移動應用:如果客戶端是一個原生平臺(比如 iOS,Android,Windows 8 等),是不支援Cookie的,需要額外通過Cookie容器進行處理,這時採用Token驗證機制就會簡單得多。



相關文章