日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線(xiàn)咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

最開(kāi)始接觸 OAuth2.0 的時(shí)候,經(jīng)常將它和 SSO單點(diǎn)登錄搞混。后來(lái)因?yàn)楣ぷ餍枰陧?xiàng)目中實(shí)現(xiàn)了一套SSO,通過(guò)對(duì)SSO的逐漸了解,也把它和OAuth2.0區(qū)分開(kāi)了。所以當(dāng)時(shí)自己也整理了一篇文章 SSO單點(diǎn)登錄三種情況的實(shí)現(xiàn)方式詳解_跡憶客 有興趣的小伙伴可以看一下

最近需要經(jīng)常和各大電商平臺(tái)進(jìn)行對(duì)接,所以又和OAuth2.0重逢了。因此這里再次對(duì)OAuth2.0的原理及實(shí)現(xiàn)方式進(jìn)行一個(gè)梳理,希望通過(guò)這套教程能夠幫到大家。對(duì)于技術(shù)類(lèi)的文章,這引言是有點(diǎn)過(guò)長(zhǎng)了。好了下面我們進(jìn)入正題。

什么是 OAuth2.0

OAuth 是一種開(kāi)放的授權(quán)協(xié)議,它是目前最流行的授權(quán)機(jī)制。它允許將存儲(chǔ)在一個(gè)站點(diǎn)上的資源共享到另一個(gè)站點(diǎn),而無(wú)需使用該站點(diǎn)的憑據(jù)。

這類(lèi)定義一般都比較抽象,要理解起來(lái)不是太容易。所以這里我們通過(guò)一個(gè)實(shí)際應(yīng)用的類(lèi)比來(lái)說(shuō)明一下這個(gè)場(chǎng)景,你會(huì)發(fā)現(xiàn),其實(shí)OAuth2.0的原理并不復(fù)雜。

首先,假設(shè)我在微信上注冊(cè)了賬號(hào),然后加了一些好友,并且有一些聊天記錄。

然后,我正在訪(fǎng)問(wèn)一個(gè)網(wǎng)站/應(yīng)用。這里假設(shè)正在訪(fǎng)問(wèn) www.jiyik.com 。這個(gè)網(wǎng)站有一項(xiàng)功能是可以獲取微信號(hào)上的好友和聊天,然后對(duì)這些信息進(jìn)行一個(gè)統(tǒng)計(jì)分析的功能(當(dāng)然,本站是沒(méi)有這項(xiàng)功能的)。

個(gè)人感覺(jué)這項(xiàng)功能不錯(cuò),就想使用它。有一種方式是我可以把個(gè)人的微信賬號(hào)和密碼告訴這個(gè)應(yīng)用。應(yīng)用可以通過(guò)賬號(hào)密碼獲取到好友信息和聊天記錄。但是這樣我感覺(jué)很不安全,如果我以后不想再繼續(xù)使用了,那我還得再去修改賬號(hào)和密碼。那樣就會(huì)很麻煩了。所以這里就需要一種方式可以使得我將一些權(quán)限授權(quán)給該網(wǎng)站,使其可以不用賬號(hào)和密碼就可以獲取到這些信息。 這種授權(quán)方式就是 OAuth2.0。當(dāng)我不再想使用該功能的時(shí)候,我就可以把權(quán)限收回或者使授權(quán)失效。

所以說(shuō)一個(gè)完整的OAuth2.0 的流程需要涉及到三個(gè)實(shí)體。

帶你全面了解 OAuth2.0

OAuth2.0原理示例

  • 資源服務(wù)商 (微信,google,F(xiàn)acebook等)
  • 第三方網(wǎng)站/應(yīng)用
  • 用戶(hù)

當(dāng)有另一個(gè)第三方的網(wǎng)站要使用微信賬號(hào)登錄其系統(tǒng)時(shí),同樣我們也可以通過(guò)授權(quán)的方式登錄這個(gè)第三方的網(wǎng)站。這樣就實(shí)現(xiàn)了同一個(gè)微信賬號(hào)可以多個(gè)不同的網(wǎng)站進(jìn)行登錄。這也是一種單點(diǎn)登錄,這也是為什么最初經(jīng)常會(huì)將其和SSO單點(diǎn)登錄搞混的原因。

通過(guò)上面的場(chǎng)景,我們大概也能清楚OAuth2.0的基本的原理了。下面我們通過(guò)整體介紹一下其架構(gòu),來(lái)更深入的了解其工作原理。

OAuth2.0 架構(gòu)

帶你全面了解 OAuth2.0

OAuth2.0-認(rèn)證架構(gòu)

整個(gè)的流程是這樣的。

一、 首先,用戶(hù)使用 Google、微信 等第三方應(yīng)用程序訪(fǎng)問(wèn)資源。

二、 第三方網(wǎng)站會(huì)帶著客戶(hù)端ID和客戶(hù)端密鑰重定向到資源服務(wù)的授權(quán)登錄界面。

三、 用戶(hù)會(huì)接收到一個(gè)Google或微信的授權(quán)登錄界面。用戶(hù)需要在該界面進(jìn)行授權(quán)。

四、 用戶(hù)使用身份驗(yàn)證應(yīng)用程序登錄。客戶(hù)端 ID 和客戶(hù)端密鑰對(duì)于授權(quán)服務(wù)器上的客戶(hù)端應(yīng)用程序是唯一的。

五、 身份驗(yàn)證服務(wù)器使用授權(quán)代碼將用戶(hù)重定向到重定向統(tǒng)一資源標(biāo)識(shí)符 (URI)。這個(gè)地址是第三方網(wǎng)站在接入資源服務(wù)的認(rèn)證服務(wù)時(shí)提交給認(rèn)證服務(wù)的,當(dāng)用戶(hù)授權(quán)成功后,會(huì)被重定向到該網(wǎng)址。

六、 用戶(hù)訪(fǎng)問(wèn)位于客戶(hù)端應(yīng)用程序中重定向 URI 的頁(yè)面,該頁(yè)面此時(shí)會(huì)帶有一個(gè)用于驗(yàn)證的Code。

七、 客戶(hù)端應(yīng)用程序?qū)@得身份驗(yàn)證Code、客戶(hù)端 ID 和客戶(hù)端密鑰,并將它們發(fā)送到授權(quán)服務(wù)器。

八、 身份驗(yàn)證應(yīng)用程序向客戶(hù)端應(yīng)用程序返回訪(fǎng)問(wèn)令牌。

九、 一旦客戶(hù)端應(yīng)用程序獲得訪(fǎng)問(wèn)令牌,用戶(hù)開(kāi)始使用客戶(hù)端應(yīng)用程序訪(fǎng)問(wèn)資源所有者的資源。

整個(gè)OAuth2.0的流程就是這樣的。這其中會(huì)涉及到一些HTTP的知識(shí)點(diǎn),關(guān)于HTTP可以參考我們的 HTTP教程。

OAuth2.0會(huì)涉及到很多術(shù)語(yǔ)和概念,下面我們對(duì)這些術(shù)語(yǔ)概念進(jìn)行一些解釋。

術(shù)語(yǔ)

驗(yàn)證

身份驗(yàn)證是識(shí)別一個(gè)用戶(hù)的過(guò)程,通常是基于用戶(hù)個(gè)人的用戶(hù)名和密碼。通過(guò)用戶(hù)名和密碼來(lái)驗(yàn)證該用戶(hù)是否是一個(gè)合法的資源持有者。

聯(lián)合身份驗(yàn)證

許多第三方網(wǎng)站/應(yīng)用都有自己的用戶(hù)名和密碼。某些應(yīng)用程序依賴(lài)于其他服務(wù)來(lái)驗(yàn)證用戶(hù)的身份。聯(lián)合身份管理系統(tǒng)提供對(duì)多個(gè)系統(tǒng)的單一訪(fǎng)問(wèn)。這稱(chēng)為聯(lián)合身份驗(yàn)證。

授權(quán)

授權(quán)是允許某人做某事的過(guò)程。它需要有效用戶(hù)的身份來(lái)檢查該用戶(hù)是否被授權(quán)。

委托授權(quán)

委托授權(quán)是將自己的憑據(jù)提供給其他用戶(hù)以代表該用戶(hù)執(zhí)行某些操作的過(guò)程。

角色

OAuth 定義了以下角色

帶你全面了解 OAuth2.0

OAuth2.0 角色

  • 資源所有者 - 資源所有者被定義為能夠授予訪(fǎng)問(wèn)其在資源服務(wù)器上托管的自己數(shù)據(jù)的能力的實(shí)體。當(dāng)資源所有者是個(gè)人時(shí),稱(chēng)為最終用戶(hù)。
  • 客戶(hù)端應(yīng)用程序 - 客戶(hù)端是一個(gè)應(yīng)用程序,它發(fā)出受保護(hù)的資源請(qǐng)求以代表資源所有者執(zhí)行操作。
  • 資源服務(wù)器 - 資源服務(wù)器是可用于訪(fǎng)問(wèn)用戶(hù)信息的 API 服務(wù)器。
  • 認(rèn)證服務(wù)器 - 認(rèn)證服務(wù)器從資源所有者那里獲得許可并將訪(fǎng)問(wèn)令牌分發(fā)給客戶(hù)端,以訪(fǎng)問(wèn)由資源服務(wù)器托管的受保護(hù)資源。

Web 服務(wù)器

Web 服務(wù)器是一個(gè)計(jì)算機(jī)系統(tǒng),它使用 HTTP協(xié)議 將網(wǎng)頁(yè)傳送給用戶(hù)。只要應(yīng)用程序想要訪(fǎng)問(wèn)資源服務(wù)器,客戶(hù)端ID和密鑰就存儲(chǔ)在web應(yīng)用程序服務(wù)器上。將客戶(hù)端ID和密鑰存儲(chǔ)在 Web 應(yīng)用程序服務(wù)器上的目的是保密。

帶你全面了解 OAuth2.0

客戶(hù)端 Web 應(yīng)用程序服務(wù)器

在上圖中,資源所有者允許機(jī)密客戶(hù)端訪(fǎng)問(wèn)托管在資源服務(wù)器上的數(shù)據(jù),其中客戶(hù)端 ID 和密鑰保存在服務(wù)器上并且是保密的。

客戶(hù)端 ID 和密鑰對(duì)于授權(quán)服務(wù)器上的客戶(hù)端應(yīng)用程序是唯一的。

資源服務(wù)器是一個(gè)服務(wù)器,它承載著 Google、微信等資源。這些資源存儲(chǔ)在資源服務(wù)器上,供客戶(hù)端應(yīng)用程序訪(fǎng)問(wèn),資源所有者擁有這些資源。

然后,授權(quán)服務(wù)器使用客戶(hù)端 Web 應(yīng)用程序訪(fǎng)問(wèn)資源所有者的資源。


用戶(hù)代理

用戶(hù)代理應(yīng)用程序由用戶(hù)設(shè)備中的客戶(hù)端應(yīng)用程序使用,它可以是一個(gè)腳本語(yǔ)言,例如在瀏覽器中運(yùn)行的 JAVAScript。所以說(shuō)我們可以將用戶(hù)代理應(yīng)用程序存儲(chǔ)在 Web 服務(wù)器上。

下圖顯示了客戶(hù)端用戶(hù)代理應(yīng)用程序的架構(gòu)。

帶你全面了解 OAuth2.0

OAuth2.0 客戶(hù)端用戶(hù)代理應(yīng)用程序的架構(gòu)

一、 首先,用戶(hù)使用 Google、微信 等身份驗(yàn)證應(yīng)用程序訪(fǎng)問(wèn)資源所有者的資源。

二、 接下來(lái),用戶(hù)應(yīng)用程序提供客戶(hù)端 ID 和客戶(hù)端密鑰,從而登錄到授權(quán)服務(wù)器。

三、 然后,用戶(hù)代理應(yīng)用程序提供一個(gè)在瀏覽器中運(yùn)行的 JavaScript 應(yīng)用程序?qū)嵗㈡溄拥?Web 服務(wù)器。

四、 授權(quán)服務(wù)器允許使用客戶(hù)端憑據(jù)從資源服務(wù)器訪(fǎng)問(wèn)資源。

五、 資源服務(wù)器包含由資源所有者擁有的資源。


本機(jī)應(yīng)用程序

本機(jī)應(yīng)用程序可以用作桌面或手機(jī)應(yīng)用程序的實(shí)例,它使用資源所有者憑據(jù)。它是安裝在資源所有者設(shè)備上的客戶(hù)端應(yīng)用程序。

應(yīng)用程序使用的身份驗(yàn)證憑據(jù)包含在應(yīng)用程序代碼中。因此,不要使用在外部用戶(hù)代理中運(yùn)行的本機(jī)應(yīng)用程序。

帶你全面了解 OAuth2.0

OAuth2.0 客戶(hù)端本機(jī)應(yīng)用程序的架構(gòu)

一、 首先,用戶(hù)使用 Google、微信 等身份驗(yàn)證應(yīng)用程序訪(fǎng)問(wèn)資源所有者的資源。

二、 接下來(lái),本機(jī)應(yīng)用程序使用客戶(hù)端 ID 和客戶(hù)端密鑰登錄到授權(quán)服務(wù)器。本機(jī)應(yīng)用程序是桌面或手機(jī)應(yīng)用程序的實(shí)例,它安裝在用戶(hù)計(jì)算機(jī)上,并將客戶(hù)端密鑰存儲(chǔ)在計(jì)算機(jī)或設(shè)備上。

三、 授權(quán)服務(wù)器允許使用客戶(hù)端憑據(jù)從資源服務(wù)器訪(fǎng)問(wèn)資源。

四、 資源服務(wù)器包含由資源所有者擁有的資源。

總結(jié)

以上我們介紹了OAuth2.0 的整體流程,以及這中間涉及到的一些術(shù)語(yǔ)和概念我們分別進(jìn)行了介紹。這要求我們對(duì)HTTP協(xié)議的原理要稍微有些了解。通過(guò)上面的介紹其實(shí)我們可以看到,整個(gè)過(guò)程較為核心的部分就是對(duì) 訪(fǎng)問(wèn)令牌的獲取。可以查看OAuth2.0 - 頒發(fā)訪(fǎng)問(wèn)令牌的幾種方式 來(lái)了解如何獲取訪(fǎng)問(wèn)令牌。

分享到:
標(biāo)簽:OAuth2
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定