主頁 > 知識庫 > OAuth 2.0 概念及授權(quán)流程梳理

OAuth 2.0 概念及授權(quán)流程梳理

熱門標簽:地圖標注資源分享注冊 海南人工外呼系統(tǒng)哪家好 北京外呼系統(tǒng)咨詢電話 合肥阿里辦理400電話號 襄陽外呼增值業(yè)務(wù)線路解決方案 怎么去掉地圖標注文字 慶陽外呼系統(tǒng)定制開發(fā) 高德地圖標注公司位置需要錢嗎 廊坊地圖標注申請入口

OAuth2 的概念

OAuth是一個關(guān)于授權(quán)的開放網(wǎng)絡(luò)標準,OAuth2是其2.0版本。

它規(guī)定了四種操作流程(授權(quán)模式)來確保安全

應(yīng)用場景有第三方應(yīng)用的接入、微服務(wù)鑒權(quán)互信、接入第三方平臺、第一方密碼登錄等

Java王國中Spring Security也對OAuth2標準進行了實現(xiàn)。

OAuth2授權(quán)模式

OAuth2定義了四種授權(quán)模式(授權(quán)流程)來對資源的訪問進行控制

  • 授權(quán)碼模式(Authorization Code Grant)
  • 隱式授權(quán)模式(Implicit Grant)
  • 用戶名密碼模式(Resource Owner Password Credentials Grant)
  • 客戶端模式(Client Credentials Grant)

無論哪個模式(流程)都擁有三個必要角色:客戶端授權(quán)服務(wù)器、資源服務(wù)器,有的還有用戶(資源擁有者),下面簡單介紹下授權(quán)流程

授權(quán)碼模式(Authorization Code Grant)

授權(quán)碼模式是OAuth2目前最安全最復(fù)雜的授權(quán)流程,先放一張圖,稍做解釋

如上圖,我們可以看到此流程可大致分為三大部分

  • Client Side:用戶+客戶端與授權(quán)服務(wù)器的交互
  • Server Side:客戶端與授權(quán)服務(wù)器之間的交互
  • Check Access Token:客戶端與資源服務(wù)器之間的交互 + 資源服務(wù)器與授權(quán)服務(wù)器之間的交互

整體上來說,可以用一句話概括授權(quán)碼模式授權(quán)流程

客戶端換取授權(quán)碼,客戶端使用授權(quán)碼換token,客戶端使用token訪問資源

接下來對這三部分進行一些說明 :

前提條件:

  • 第三方客戶端需要提前與資源擁有方(同時也是授權(quán)所有方)協(xié)商客戶端id(client_id),客戶端密鑰(client_secret)
  • 文中暫時未將scope、state等依賴具體框架的內(nèi)容寫進來,這里可以參考Spring Security OAuth2的實現(xiàn)

Client Side

客戶端換取授權(quán)碼

這個客戶端可以是瀏覽器,

  • 客戶端將client_id + client_secret + 授權(quán)模式標識(grant_type) + 回調(diào)地址(redirect_uri)拼成url訪問授權(quán)服務(wù)器授權(quán)端點
  • 授權(quán)服務(wù)器返回登錄界面,要求用戶登錄(此時用戶提交的密碼等直接發(fā)到授權(quán)服務(wù)器,進行校驗)
  • 授權(quán)服務(wù)器返回授權(quán)審批界面,用戶授權(quán)完成
  • 授權(quán)服務(wù)器返回授權(quán)碼到回調(diào)地址

Server Side

客戶端使用授權(quán)碼換token

  • 客戶端接收到授權(quán)碼,并使用授權(quán)碼 + client_id + client_secret訪問授權(quán)服務(wù)器頒發(fā)token端點
  • 授權(quán)服務(wù)器校驗通過,頒發(fā)token返回給客戶端
  • 客戶端保存token到存儲器(推薦cookie)

Check Access Token

客戶端使用token訪問資源

  • 客戶端在請求頭中添加token,訪問資源服務(wù)器
  • 資源服務(wù)器收到請求,先調(diào)用校驗token的方法(可以是遠程調(diào)用授權(quán)服務(wù)器校驗端點,也可以直接訪問授權(quán)存儲器手動校對)
  • 資源服務(wù)器校驗成功,返回資源

這里的說明省去了一些參數(shù),如scope(請求token的作用域)、state(用于保證請求不被CSRF)、redirect_uri(授權(quán)服務(wù)器回調(diào)uri),先理解概念,實現(xiàn)的時候再去要求

隱式授權(quán)模式(Implicit Grant)

隱式授權(quán)模式大致可分為兩部分:

  • Client Side:用戶+客戶端與授權(quán)服務(wù)器的交互
  • Check Access Token:客戶端與資源服務(wù)器之間的交互 + 資源服務(wù)器與授權(quán)服務(wù)器之間的交互

用一句話概括隱式授權(quán)模式授權(quán)流程

客戶端讓用戶登錄授權(quán)服務(wù)器換token,客戶端使用token訪問資源

Client Side

客戶端讓用戶登錄授權(quán)服務(wù)器換token

  • 客戶端(瀏覽器或單頁應(yīng)用)將client_id + 授權(quán)模式標識(grant_type)+ 回調(diào)地址(redirect_uri)拼成url訪問授權(quán)服務(wù)器授權(quán)端點
  • 授權(quán)服務(wù)器跳轉(zhuǎn)用戶登錄界面,用戶登錄
  • 用戶授權(quán)
  • 授權(quán)服務(wù)器訪問回調(diào)地址返回token給客戶端

Check Access Token

客戶端使用token訪問資源

  • 客戶端在請求頭中添加token,訪問資源服務(wù)器
  • 資源服務(wù)器收到請求,先調(diào)用校驗token的方法(可以是遠程調(diào)用授權(quán)服務(wù)器校驗端點,也可以直接訪問授權(quán)存儲器手動校對)
  • 資源服務(wù)器校驗成功,返回資源

密碼模式(Resource Owner Password Credentials Grant)

密碼模式大體上也分為兩部分:

  • Client Side: 用戶與客戶端交互,客戶端與授權(quán)服務(wù)器交互
  • Check Access Token:客戶端與資源服務(wù)器之間的交互 + 資源服務(wù)器與授權(quán)服務(wù)器之間的交互

一句話概括用戶名密碼模式流程:

用戶在客戶端提交賬號密碼換token,客戶端使用token訪問資源

Client Side
用戶在客戶端提交賬號密碼換token

  • 客戶端要求用戶登錄
  • 用戶輸入密碼,客戶端將表單中添加客戶端的client_id + client_secret發(fā)送給授權(quán)服務(wù)器頒發(fā)token端點
  • 授權(quán)服務(wù)器校驗用戶名、用戶密碼、client_id、client_secret,均通過返回token到客戶端
  • 客戶端保存token

Check Access Token

客戶端使用token訪問資源

  • 客戶端在請求頭中添加token,訪問資源服務(wù)器
  • 資源服務(wù)器收到請求,先調(diào)用校驗token的方法(可以是遠程調(diào)用授權(quán)服務(wù)器校驗端點,也可以直接訪問授權(quán)存儲器手動校對)
  • 資源服務(wù)器校驗成功,返回資源

客戶端模式(Client Credentials Grant)

客戶端模式大體上分為兩部分:

  • Server Side: 客戶端與授權(quán)服務(wù)器之間的交互
  • Check Access Token: 客戶端與資源服務(wù)器,資源服務(wù)器與授權(quán)服務(wù)器之間的交互

一句話概括客戶端模式授權(quán)流程:

客戶端使用自己的標識換token,客戶端使用token訪問資源

Server Side

客戶端使用自己的標識換token

  • 客戶端使用client_id + client_secret + 授權(quán)模式標識訪問授權(quán)服務(wù)器的頒發(fā)token端點
  • 授權(quán)服務(wù)器校驗通過返回token給客戶端
  • 客戶端保存token

Check Access Token

客戶端使用token訪問資源

  • 客戶端在請求頭中添加token,訪問資源服務(wù)器
  • 資源服務(wù)器收到請求,先調(diào)用校驗token的方法(可以是遠程調(diào)用授權(quán)服務(wù)器校驗端點,也可以直接訪問授權(quán)存儲器手動校對)
  • 資源服務(wù)器校驗成功,返回資源

OAuth2授權(quán)模式的選型

考慮到授權(quán)場景的多樣性,可以參考以下兩種選型方式

按授權(quán)需要的多端情況

按客戶端類型與所有者

后記

學(xué)習(xí)OAuth2有一段時間了,把學(xué)到的知識分享出來,行文中難免有錯誤,如果發(fā)現(xiàn)還請留言指正,謝謝合作

參考文章與資料:

https://time.geekbang.org/course/intro/84 作者:楊波

https://blog.csdn.net/sinat_25295611/article/details/84980987 作者:Kayfen

How OAuth 2.0 works and how to choose the right flow 作者:Lorenzo Spyna

原文出處https://www.cnblogs.com/hellxz/p/oauth2_process.html

到此這篇關(guān)于OAuth 2.0 概念及授權(quán)流程梳理的文章就介紹到這了,更多相關(guān)OAuth2.0 授權(quán)流程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • nodejs實現(xiàn)OAuth2.0授權(quán)服務(wù)認證
  • 微信公眾號OAuth2.0網(wǎng)頁授權(quán)問題淺析
  • Android仿新浪微博oauth2.0授權(quán)界面實現(xiàn)代碼(2)
  • 微信網(wǎng)頁授權(quán)(OAuth2.0) PHP 源碼簡單實現(xiàn)
  • ASP.NET實現(xiàn)QQ、微信、新浪微博OAuth2.0授權(quán)登錄

標簽:株洲 臺州 商丘 鎮(zhèn)江 哈密 平頂山 鶴崗 綿陽

巨人網(wǎng)絡(luò)通訊聲明:本文標題《OAuth 2.0 概念及授權(quán)流程梳理》,本文關(guān)鍵詞  OAuth,2.0,概,念及,授權(quán),流程,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《OAuth 2.0 概念及授權(quán)流程梳理》相關(guān)的同類信息!
  • 本頁收集關(guān)于OAuth 2.0 概念及授權(quán)流程梳理的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章