OAuth2.0簡單說就是一種授權(quán)的協(xié)議掏湾,OAuth2.0在客戶端與服務(wù)提供商之間肿嘲,設(shè)置了一個(gè)授權(quán)層(authorization layer)■撸客戶端不能直接登錄服務(wù)提供商,只能登錄授權(quán)層封救,以此將用戶與客戶端區(qū)分開來拇涤。然后客戶端在登錄時(shí)候不使用賬號密碼兴泥,而是使用會自動過期的令牌token
定義比較難理解虾宇,可以舉個(gè)例子,假如我們要登錄豆瓣網(wǎng)旭贬,可以你是沒賬號的搪泳,又不想注冊,然后這時(shí)候可以用QQ登錄岸军,登錄時(shí)候會轉(zhuǎn)跳到QQ登錄頁面,這個(gè)就是QQ就是一個(gè)認(rèn)證服務(wù)器佣谐,豆瓣是服務(wù)提供商方妖,也可以說是資源服務(wù)器
(A)打開客戶端,重定向雌澄,請求給予授權(quán)杯瞻。
(B)用戶開始給予客戶端授權(quán)
(C)客戶端使用獲得的授權(quán),向認(rèn)證服務(wù)器申請令牌魁莉。
(D)客戶端拿授權(quán)碼去認(rèn)證服務(wù)器認(rèn)證卒废,確認(rèn)提供同意發(fā)放令牌。
(E)認(rèn)證通過摔认,客戶端使用令牌宅粥,向資源服務(wù)器申請獲取資源。
(F)資源服務(wù)器確認(rèn)令牌無誤秽梅,同意向客戶端開放資源。
OAuth2.0授權(quán)方式:
- 授權(quán)碼模式(authorization code)
- 簡化模式(implicit)
- 密碼模式(resource owner password credentials)
- 客戶端模式(client credentials)
一般認(rèn)證授權(quán)過程需要的參數(shù):
- response_type:授權(quán)類型环壤,必選項(xiàng)
- client_id:客戶端的ID钞诡,必選項(xiàng)
- redirect_uri:重定向URI郑现,可選項(xiàng)
- scope:申請的權(quán)限范圍荧降,可選項(xiàng)
- state:客戶端的當(dāng)前狀態(tài),可以指定任意值辛友,認(rèn)證服務(wù)器會原封不動地返回這個(gè)值
其實(shí)總結(jié)一下,Oauth2.0用授權(quán)碼方式废累,無非就是用戶訪問客戶端就直接重定向到認(rèn)證服務(wù)器脱盲,然后輸入賬號密碼等等通過驗(yàn)證后,認(rèn)證服務(wù)器會重定向到redirect_uri并將授權(quán)碼附在url上宾毒,然后再拿授權(quán)碼去認(rèn)證,認(rèn)證通過發(fā)放令牌乙各,登錄成功
參考資料:
http://www.rfcreader.com/#rfc6749_line1019
http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html