欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2020年08月18日 10:06:06   作者:東北小狐貍  
這篇文章主要介紹了OAuth 2.0 概念及授權(quán)流程梳理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

OAuth2 的概念

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

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

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

Java王國(guó)中Spring Security也對(duì)OAuth2標(biāo)準(zhǔn)進(jìn)行了實(shí)現(xiàn)。

OAuth2授權(quán)模式

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

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

無(wú)論哪個(gè)模式(流程)都擁有三個(gè)必要角色:客戶端授權(quán)服務(wù)器、資源服務(wù)器,有的還有用戶(資源擁有者),下面簡(jiǎn)單介紹下授權(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ù)器之間的交互

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

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

接下來(lái)對(duì)這三部分進(jìn)行一些說(shuō)明 :

前提條件:

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

Client Side

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

這個(gè)客戶端可以是瀏覽器,

  • 客戶端將client_id + client_secret + 授權(quán)模式標(biāo)識(shí)(grant_type) + 回調(diào)地址(redirect_uri)拼成url訪問(wèn)授權(quán)服務(wù)器授權(quán)端點(diǎn)
  • 授權(quán)服務(wù)器返回登錄界面,要求用戶登錄(此時(shí)用戶提交的密碼等直接發(fā)到授權(quán)服務(wù)器,進(jìn)行校驗(yàn))
  • 授權(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訪問(wèn)授權(quán)服務(wù)器頒發(fā)token端點(diǎn)
  • 授權(quán)服務(wù)器校驗(yàn)通過(guò),頒發(fā)token返回給客戶端
  • 客戶端保存token到存儲(chǔ)器(推薦cookie)

Check Access Token

客戶端使用token訪問(wèn)資源

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

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

隱式授權(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訪問(wèn)資源

Client Side

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

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

Check Access Token

客戶端使用token訪問(wèn)資源

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

密碼模式(Resource Owner Password Credentials Grant)

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

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

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

用戶在客戶端提交賬號(hào)密碼換token,客戶端使用token訪問(wèn)資源

Client Side
用戶在客戶端提交賬號(hào)密碼換token

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

Check Access Token

客戶端使用token訪問(wèn)資源

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

客戶端模式(Client Credentials Grant)

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

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

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

客戶端使用自己的標(biāo)識(shí)換token,客戶端使用token訪問(wèn)資源

Server Side

客戶端使用自己的標(biāo)識(shí)換token

  • 客戶端使用client_id + client_secret + 授權(quán)模式標(biāo)識(shí)訪問(wèn)授權(quán)服務(wù)器的頒發(fā)token端點(diǎn)
  • 授權(quán)服務(wù)器校驗(yàn)通過(guò)返回token給客戶端
  • 客戶端保存token

Check Access Token

客戶端使用token訪問(wèn)資源

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

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

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

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

按客戶端類型與所有者

后記

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

參考文章與資料:

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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • ibatis簡(jiǎn)單實(shí)現(xiàn)與配置

    ibatis簡(jiǎn)單實(shí)現(xiàn)與配置

    ibatis與hibernate一樣,同樣也是一種OR框架,OR框架有很多種,相對(duì)用的比較多的就是hibernate與ibatis,ibatis是一種白自動(dòng)化的ORM的實(shí)現(xiàn)
    2009-01-01
  • DevOps,CI,CD,自動(dòng)化簡(jiǎn)述

    DevOps,CI,CD,自動(dòng)化簡(jiǎn)述

    這篇文章主要介紹了DevOps,CI,CD,自動(dòng)化簡(jiǎn)單介紹,通過(guò)本文給大家簡(jiǎn)單介紹DevOps,CI,CD,自動(dòng)化這四者的基本概念,需要的朋友可以參考下
    2021-07-07
  • git中cherry-pick命令的使用教程

    git中cherry-pick命令的使用教程

    這篇文章介紹了git中cherry-pick命令的使用方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 比較經(jīng)典技術(shù)普及帖 以你剛才在淘寶上買(mǎi)了一件東西

    比較經(jīng)典技術(shù)普及帖 以你剛才在淘寶上買(mǎi)了一件東西

    你發(fā)現(xiàn)快要過(guò)年了,于是想給你的女朋友買(mǎi)一件毛衣,你打開(kāi)了taobao。這時(shí)你的瀏覽器首先查詢DNS服務(wù)器,將taobao轉(zhuǎn)換成ip地址
    2012-06-06
  • selenium IDE自動(dòng)化測(cè)試腳本的實(shí)現(xiàn)

    selenium IDE自動(dòng)化測(cè)試腳本的實(shí)現(xiàn)

    本文主要介紹了selenium IDE自動(dòng)化測(cè)試腳本的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 都2019年了,還問(wèn)http中GET和POST的區(qū)別

    都2019年了,還問(wèn)http中GET和POST的區(qū)別

    最近看了一些同學(xué)的面經(jīng),發(fā)現(xiàn)無(wú)論什么技術(shù)崗位,還是會(huì)問(wèn)到 get 和 post 的區(qū)別,而搜索出來(lái)的答案并不能讓我們裝得一手好逼,那就讓我們從 HTTP 報(bào)文的角度來(lái)擼一波,從而搞明白他們的區(qū)別
    2019-02-02
  • UTC時(shí)間、GMT時(shí)間、本地時(shí)間、Unix時(shí)間戳的具體使用

    UTC時(shí)間、GMT時(shí)間、本地時(shí)間、Unix時(shí)間戳的具體使用

    本文主要介紹了UTC時(shí)間、GMT時(shí)間、本地時(shí)間、Unix時(shí)間戳的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • ElasticSearch核心概念

    ElasticSearch核心概念

    Elaticsearch簡(jiǎn)稱為es,es是一個(gè)開(kāi)源的高擴(kuò)展的分布式全文檢索引擎,本文給大家介紹ElasticSearch基礎(chǔ)知識(shí)介紹,對(duì)ElasticSearch相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-07-07
  • 詳解HBase表的數(shù)據(jù)模型

    詳解HBase表的數(shù)據(jù)模型

    HBase 是一種列存儲(chǔ)模式與鍵值對(duì)存儲(chǔ)模式結(jié)合的 NoSQL 數(shù)據(jù)庫(kù),它具有靈活的數(shù)據(jù)模型,不僅可以基于鍵進(jìn)行快速查詢,還可以實(shí)現(xiàn)基于值、列名等的全文遍歷和檢索,下面給大家介紹HBase表的數(shù)據(jù)模型,感興趣的朋友一起看看吧
    2022-05-05
  • Web Jmeter–接口測(cè)試工具詳解

    Web Jmeter–接口測(cè)試工具詳解

    本文主要介紹Web Jmeter接口測(cè)試工具,這里整理了詳細(xì)的資料來(lái)說(shuō)明Jmeter 的使用,有需要的小伙伴可以參考下
    2016-09-09

最新評(píng)論