OAuth
概括:OAuth是一個開放授權標准,服務器端允許用戶在不給第三方軟件密碼和賬戶的前提下,讓第三方軟件訪問一定的服務器端資源。
具體實現:OAuth允許第三方軟件提供一個令牌,而不是用戶名和密碼來訪問用戶在服務器端的某些特定資源。某一個令牌授權只針對一個特定的第三方系統(例如,視頻編輯軟件在某一特定時間內,例如2小時,只能訪問服務器端用戶的某些特定資源(例如某一相冊中的視頻)。
以下為OAuth2.0的流程:
這種基於OAuth的認證機制適用於個人消費類的互聯網產品,如社交類APP等應用,不太適合自認證權限管理的企業。
Cookie+Session Auth
概括:cookie+session 客戶端訪問服務端時,服務器在服務端創建一個session對象用來存儲用戶的狀態信息,此session有個唯一的標識ID,並將此session ID 返回給客戶端,客戶端將session ID存放在cookie中,此后客戶端通過cookie中的session ID與服務器端保持連接。
以下為cookie+sesssion Auth 流程:
cookie+session 多用於一些網上商城,但是對於一些原聲平台不支持cookie(andorid,windows,ios)。
TOKEN Auth
概括:客戶端訪問服務器端時,服務器端利用某算法生成一個TOKEN返回給客戶端,一般存儲在cookie中或者http Authorization,下次客戶端訪問服務器驗證客戶端的TOKEN來辨別身份。
優勢:
TOKEN 生成速度驗證速度要比去數據庫中檢索session ID來的快。
cookie存在跨域問題,而token可以很好的解決跨域問題。
更適用於CDN
TOKEN AUTH 認證過程如下:
TOKEN 的認證過程分為兩個方面-首次登錄,其后的登錄過程。
首次登錄:
其后的登錄過程如下: