我是通過點點網了解到OAuth2.0的,點點網關於OAuth的介紹是:OAuth 2.0是在2006年設計的OAuth協議的下一個版本, 2.0版本更注重於客戶端開發的簡易性,同時給Web,桌面,移動等平台給予支持,它是基於OAuth WRAP開放的一套安全認證的流程。
OAuth2.0的授權認證流程如下圖:
A:客戶端發起授權請求
B:資源的擁有者返回允許授權的應答
C:客戶端向授權服務器發出認證授權的請求
D:認證通過,授權服務器會返回一個包含Access Token的應答,該應答中應包含Access Token
E:客戶端根據D中得到的Access Token向資源服務器發送訪問請求
F:資源服務器返回資源。
以上只是個人的簡單理解,只做參考。
關於OAuth 2.0的認證流程,根據官方的說法,總共有4種:
1. Authorization Code
這是基於網頁的授權方式。客戶端在請求驗證前,需要先將瀏覽器跳轉到用戶授權頁面,用戶在登陸並確認授權后將瀏覽器Redirect到獲得ClientID是注冊的回調地址。這個地址中包含一個code參數。用戶根據該參數請求服務器獲得Access Token。
該認證授權流程包含了圖片中的所有步驟。
2.Implicit
這是一種適合JS等網頁語言使用的認證方式,這種認證方式比較簡單,值包含圖片中的A、B、C和D幾個步驟。首先將頁面引導至用戶授權頁面,用戶授權后直接跳轉到回調地址,並將Access Token作為地址參數傳遞給頁面,方便腳本語言(JS)的訪問。
3.Resource Owner Password Credentials
這是一種比較大的信任授權方式,前提條件是用戶對你的應用有絕對的信任,願意在你的應用(Client)中輸入自己的用戶名和密碼。客戶端通過用戶名和密碼進行驗證,並得到Access Token。由於這種方式需要用戶的絕對信任,並且需要客戶端程序開發人員有比較強的自律和職業操守,所以這種方式經常不被推薦。
4.Client Credentials
對於不需要用戶登陸就可以訪問的資源,可以通過這種方式進行授權。這種授權方式只包含C、D、E和F幾個步驟。
關於 Refresh Token
正常情況下,我們在獲得了Access Token后就可以對受保護的資源進行訪問。但是 Access Token的聲明周期比較短(通常為10分鍾),當Access Token到期后,我們可以通過使用Refresh Token重新獲得Access Token。
每一個Refresh Token可以使用一次,在重新獲得Access Token時,Refresh Token 也會被重新獲得。
注意:由於我是通過點點網的OAuth了解到的這些內容,盡管也參考了一些博客和官方的文檔,但仍然不能做到盡善盡美,讀者在看的時候也要抱着懷疑的態度,積極求證,有不懂的問題可以留言和我交流。