oauth2 的受權方式前端
要能訪問各類資源重點是要獲取令牌(token),但根據令牌的獲取方式不一樣,又會有四種受權方式後端
受權碼:這是最經常使用的一種方式,指的是第三方應用先申請一個受權碼,而後再用該碼獲取令牌,項目中用的就是這種安全
隱藏式:容許直接向前端頒發令牌。這種方式沒有受權碼這個中間步驟,因此稱爲(受權碼)"隱藏式"(implicit),通常應用於純前端項目網站
密碼式:直接經過用戶名和密碼的方式申請令牌,這方式是最不安全的方式命令行
憑證式:這種方式的令牌是針對第三方應用,而不是針對用戶的,既某個第三方應用的全部用戶共用一個令牌,通常用於沒有前端的命令行應用code
第一步,A 網站提供一個連接,用戶點擊後就會跳轉到 B 網站,受權用戶數據給 A 網站使用blog
http://b.com/oauth/authorize?token
response_type=code&ci
client_id=CLIENT_ID&資源
redirect_uri=CALLBACK_URL&
scope=read
第二步,用戶跳轉後,B 網站會要求用戶登陸,而後詢問是否贊成給予 A 網站受權。用戶表示贊成,這時 B 網站就會跳回redirect_uri參數指定的網址
http://a.com/callback?code=AUTHORIZATION_CODE
第三步,A 網站拿到受權碼之後,就能夠在後端,向 B 網站請求令牌。
http://b.com/oauth/token?
client_id=CLIENT_ID&
client_secret=CLIENT_SECRET&
grant_type=authorization_code&
code=AUTHORIZATION_CODE&
redirect_uri=CALLBACK_URL
上面 URL 中,client_id參數和client_secret參數用來讓 B 確認 A 的身份(client_secret參數是保密的,所以只能在後端發請求),grant_type參數的值是AUTHORIZATION_CODE,表示採用的受權方式是受權碼,code參數是上一步拿到的受權碼,redirect_uri參數是令牌頒發後的回調網址。
第四步,B 網站收到請求之後,就會頒發令牌。具體作法是向redirect_uri指定的網址,發送一段 JSON 數據。
{
"access_token":"ACCESS_TOKEN",
"info":{...}
}
接下來用戶就能夠根據這個access_token來進行訪問了
對於第三方網站來講 可分爲3部分
一、申請code
二、申請token
三、帶着token去請求資源(如:申請獲取用戶信息)