溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

OAuth2.0的四種授權(quán)方式是什么

發(fā)布時間:2021-11-01 14:38:51 來源:億速云 閱讀:550 作者:iii 欄目:編程語言

這篇文章主要講解了“OAuth2.0的四種授權(quán)方式是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“OAuth2.0的四種授權(quán)方式是什么”吧!

一、OAuth3.0 為何物二、OAuth3.0 授權(quán)方式

OAuth3.0四種授權(quán)中授權(quán)碼方式是最為復(fù)雜,但也是安全系數(shù)最高的,比較常用的一種方式。這種方式適用于兼具前后端的Web項目,因為有些項目只有后端或只有前端,并不適用授權(quán)碼模式。

下圖我們以用WX登錄掘金為例,詳細(xì)看一下授權(quán)碼方式的整體流程。

OAuth2.0的四種授權(quán)方式是什么

用戶選擇WX登錄掘金,掘金會向WX發(fā)起授權(quán)請求,接下來 WX詢問用戶是否同意授權(quán)(常見的彈窗授權(quán))。response_typecode 要求返回授權(quán)碼,scope 參數(shù)表示本次授權(quán)范圍為只讀權(quán)限,redirect_uri 重定向地址。

https://wx.com/oauth/authorize?
  response_type=code&
  client_id=CLIENT_ID&
  redirect_uri=http://juejin.im/callback&
  scope=read

用戶同意授權(quán)后,WX 根據(jù) redirect_uri重定向并帶上授權(quán)碼。

http://juejin.im/callback?code=AUTHORIZATION_CODE

當(dāng)掘金拿到授權(quán)碼(code)時,帶授權(quán)碼和密匙等參數(shù)向WX申請令牌。grant_type表示本次授權(quán)為授權(quán)碼方式 authorization_code ,獲取令牌要帶上客戶端密匙 client_secret,和上一步得到的授權(quán)碼 code

https://wx.com/oauth/token?
 client_id=CLIENT_ID&
 client_secret=CLIENT_SECRET&
 grant_type=authorization_code&
 code=AUTHORIZATION_CODE&
 redirect_uri=http://juejin.im/callback

最后 WX 收到請求后向 redirect_uri 地址發(fā)送 JSON 數(shù)據(jù),其中的access_token 就是令牌。

 {    
  "access_token":"ACCESS_TOKEN",
  "token_type":"bearer",
  "expires_in":2592000,
  "refresh_token":"REFRESH_TOKEN",
  "scope":"read",
  ......
}

2、隱藏式

上邊提到有一些Web應(yīng)用是沒有后端的, 屬于純前端應(yīng)用,無法用上邊的授權(quán)碼模式。令牌的申請與存儲都需要在前端完成,跳過了授權(quán)碼這一步。

前端應(yīng)用直接獲取 token,response_type 設(shè)置為 token,要求直接返回令牌,跳過授權(quán)碼,WX授權(quán)通過后重定向到指定 redirect_uri

https://wx.com/oauth/authorize?
  response_type=token&
  client_id=CLIENT_ID&
  redirect_uri=http://juejin.im/callback&
  scope=read

3、密碼式

密碼模式比較好理解,用戶在掘金直接輸入自己的WX用戶名和密碼,掘金拿著信息直接去WX申請令牌,請求響應(yīng)的 JSON結(jié)果中返回 token。grant_typepassword 表示密碼式授權(quán)。

https://wx.com/token?
  grant_type=password&
  username=USERNAME&
  password=PASSWORD&
  client_id=CLIENT_ID

這種授權(quán)方式缺點是顯而易見的,非常的危險,如果采取此方式授權(quán),該應(yīng)用一定是可以高度信任的。

4、憑證式

憑證式和密碼式很相似,主要適用于那些沒有前端的命令行應(yīng)用,可以用最簡單的方式獲取令牌,在請求響應(yīng)的 JSON 結(jié)果中返回 token

grant_typeclient_credentials 表示憑證式授權(quán),client_idclient_secret 用來識別身份。

https://wx.com/token?
  grant_type=client_credentials&
  client_id=CLIENT_ID&
  client_secret=CLIENT_SECRET

三、令牌的使用與更新1、令牌怎么用?

拿到令牌可以調(diào)用 WX API 請求數(shù)據(jù)了,那令牌該怎么用呢?

每個到達(dá)WX的請求都必須帶上 token,將 token 放在 http 請求頭部的一個Authorization字段里。

如果使用postman 模擬請求,要在Authorization -> Bearer Token 放入 token注意:低版本postman 沒有這個選項。

OAuth2.0的四種授權(quán)方式是什么

2、令牌過期怎么辦?

token是有時效性的,一旦過期就需要重新獲取,但是重走一遍授權(quán)流程,不僅麻煩而且用戶體驗也不好,那如何讓更新令牌變得優(yōu)雅一點呢?

一般在頒發(fā)令牌時會一次發(fā)兩個令牌,一個令牌用來請求API,另一個負(fù)責(zé)更新令牌 refresh_token。grant_typerefresh_token 請求為更新令牌,參數(shù) refresh_token 是用于更新令牌的令牌。

https://wx.com/oauth/token?
  grant_type=refresh_token&
  client_id=CLIENT_ID&
  client_secret=CLIENT_SECRET&
  refresh_token=REFRESH_TOKEN

感謝各位的閱讀,以上就是“OAuth2.0的四種授權(quán)方式是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對OAuth2.0的四種授權(quán)方式是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI