五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

電腦知識:很多網(wǎng)站都支持第三方授權登錄,這究竟是怎么一回事?

2020-09-25 22:17 作者:C語言編程__Plus  | 我要投稿

引言

現(xiàn)在很多網(wǎng)站都支持第三方授權登錄,小伙伴們應該很常見這種授權登錄方式了,那小伙伴們知道這種方式是以什么原理實現(xiàn)的么?

今天小編就為大家講一講里邊的奧秘!


正文

OAuth簡介


我們都知道,所有的第三方授權登錄底層基本上采用http/https協(xié)議。但是由于http/https協(xié)議是不可靠的,而客戶端和服務端都希望要達到100%的可靠性。所以以OAuth為代表的,基于http/https協(xié)議的授權標準也由此誕生并變成了主流。最開始在2006年出現(xiàn)的是OAuth1.0,由于1.0出現(xiàn)了一些安全漏洞等一些問題,5年后的2011年,該團隊發(fā)布了OAuth2.0標準。

由于目前各大網(wǎng)站已經(jīng)基本淘汰了OAuth1.0,用OAuth2.0標準來實現(xiàn)的授權功能,所以這篇文章是針對OAuth2.0來介紹的。

角色介紹


OAuth可以分為四個角色,我們這里就拿掘金來舉例:

resource owner:可以理解為用戶,在這里就是你自己;只有這個用戶同意第三方或者基于OAuth的授權方式時,才能進行后續(xù)操作。

resource server:資源服務器,在這里就是掘金這個平臺。

client:即客戶:如果你是用瀏覽器瀏覽的掘金網(wǎng)站的話,那瀏覽器就是client。

authorization server:授權服務器;使用微信,GitHub,還是微博來授權呢,使用哪種方式哪個平臺就是authorization server。


運行流程

介紹完四個角色,接著讓我們來介紹一下它的運行流程:

![image-20200920154746939](/Users/zhangbo/Library/Application Support/typora-user-images/image-20200920154746939.png)

(A)客戶端請求用戶的授權;用戶要告訴客戶端,是否要用第三方授權,是微信?QQ?還是微博?

(B)當用戶的同意授權后,把同意授權的消息發(fā)送到客戶端。

(C)當B結束后,客戶端拿著這些同意授權的信息去請求授權服務器,這里的授權服務器就是你所選的微信授權的服務器還是QQ授權的服務器。

(D)如果授權服務器得到并驗證這些授權信息有效的話,這時授權服務器會頒發(fā)客戶端一個訪問令牌(在微信公眾號的網(wǎng)頁授權中,訪問令牌的字段名稱是access_token)

(E)客戶端收到令牌,將其發(fā)送給資源服務器申請資源,這里的資源服務器就是我們的掘金服務器。

(F)資源服務器確認無誤后,說明認證通過,資源服務器可以將資源返回給客戶端。

客戶端授權模式

在上面B步驟中,OAuth2.0一共有四種授權模式,我們來一一做個介紹:



授權碼模式(Authorization Code)

簡化模式(Implicit)

密碼模式(Resource Owner Password Credentials)

客戶端模式(Client Credentials)

授權碼模式(Authorization Code)


(A)用戶帶著客戶端標識符,重定向的URI,本地狀態(tài)和請求范圍這四個屬性去請求授權服務器。這里的本地狀態(tài)是可選屬性,可以選擇不傳。但是如果不傳可能會遭受到CSRF攻擊,大家可以視情況而定;

(B)授權服務器對用戶進行身份驗證,用來確定用戶是授予還是拒絕;

(C)假設用戶被授予了訪問權限,授權服務器會將用戶重定向到之前所提供的重定向URI中。重定向URI中還包括本地狀態(tài)和客戶標識符;

(D)接著客戶端將帶著本地狀態(tài)和客戶標識符去請求授權服務器,目的是換取對應的訪問令牌;

(E)授權服務器接到客戶端的請求后,檢驗本地狀態(tài)和客戶標識符,如果驗證通過,將為客戶端返回對應的訪問令牌和(可選)刷新令牌。

簡化模式(Implicit Grant)


(A)客戶端代理用戶去請求授權服務器;

(B)用戶決定是否給客戶端授權;

(C)當用戶同意授權后,客戶端將重定向到重定向URI,重定向URI中并存在著訪問令牌;

(D)接著瀏覽器請求資源服務器,并且不用帶著訪問令牌;

(E)資源服務器通過認證后,返回一個網(wǎng)頁,并包含訪問令牌;

(F)瀏覽器解析這個網(wǎng)頁并提取訪問令牌;

(G)瀏覽器發(fā)送令牌給到客戶端。

密碼模式(Resource Owner Password Credentials)


(A)用戶向客戶端提供用戶名和密碼;

(B)客戶端將用戶提供的資源請求授權服務器;

(C)授權服務器進行身份驗證,通過后發(fā)出訪問令牌。

客戶端模式(Client Credentials)


(A)客戶端向授權服務器進行身份驗證,所要訪問令牌;

(B)授權服務器向客戶端進行身份驗證,如果有效,則發(fā)出訪問令牌。

文章說到現(xiàn)在,你對第三方登錄了解了多少呢?歡迎在文章下方談談你的看法或者收獲!

另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!

分享(源碼、項目實戰(zhàn)視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!

學習C/C++編程知識,提升C/C++編程能力,歡迎關注UP一起來成長!
另外,UP在主頁上傳了一些學習C/C++編程的視頻教程,有興趣或者正在學習的小伙伴一定要去看一看哦!會對你有幫助的~

編程學習軟件分享:

編程學習視頻分享:




電腦知識:很多網(wǎng)站都支持第三方授權登錄,這究竟是怎么一回事?的評論 (共 條)

分享到微博請遵守國家法律
孟村| 杭锦旗| 大竹县| 南漳县| 黄梅县| 吉首市| 大悟县| 蒙城县| 清流县| 万荣县| 大港区| 昂仁县| 南江县| 固始县| 工布江达县| 贵南县| 南充市| 龙山县| 同心县| 合山市| 绍兴县| 涿州市| 弥勒县| 郧西县| 白水县| 龙川县| 右玉县| 万源市| 华亭县| 岳普湖县| 太康县| 馆陶县| 多伦县| 延长县| 法库县| 泰安市| 郎溪县| 泸州市| 琼海市| 栖霞市| 镇原县|