華為帳號(hào)服務(wù)學(xué)習(xí)筆記(二):OAuth2.0協(xié)議詳解

在上一篇文章《華為帳號(hào)服務(wù)學(xué)習(xí)筆記(一):什么是HMS拔稳,什么是華為帳號(hào)服務(wù)》中已經(jīng)給大家整理了一下華為帳號(hào)服務(wù)的使用場景和優(yōu)勢聘鳞,接下來我就將帶大家進(jìn)一步了解華為帳號(hào)服務(wù)涉及的一些基礎(chǔ)知識(shí)薄辅、接入方法、效率提升工具等抠璃。大家有什么疑問也可以隨時(shí)在評(píng)論區(qū)提站楚。

要了解華為帳號(hào)服務(wù),首先我們需要熟悉2個(gè)協(xié)議:Oauth2.0和OpenID Connect協(xié)議搏嗡,因?yàn)槿A為帳號(hào)的登錄方式就是基于這兩個(gè)協(xié)議來的窿春,不僅僅是華為帳號(hào)拉一,微信及其他廠商的帳號(hào)也基本基于這兩個(gè)協(xié)議。本文先介紹Oauth2.0旧乞。

一蔚润、一個(gè)有趣的問題

在回答什么是OAuth2.0前,我先拋出一個(gè)問題:

我們知道用戶可以通過帳號(hào)+密碼的方式獲取自己華為或者微信帳號(hào)的詳細(xì)信息尺栖,如用戶名嫡纠、郵箱、手機(jī)號(hào)等延赌,但第三方App除盏,比如下面這款app狂野飆車,用戶使用了華為帳號(hào)登錄后挫以,這款app就獲得了用戶的華為帳號(hào)信息者蠕,那么它是怎么獲得這些信息的呢?




要回答上面這個(gè)問題掐松,需要引入一個(gè)概念:代理授權(quán)踱侣;代理授權(quán)是一種允許第三方應(yīng)用訪問用戶數(shù)據(jù)的方法。有兩種方式:

1甩栈、用戶的帳號(hào)密碼提供給第三方應(yīng)用泻仙,以便它們可以代表你來登陸帳號(hào)并且訪問數(shù)據(jù);

2量没、通過 OAuth 授權(quán)第三方應(yīng)用訪問用戶的數(shù)據(jù)玉转,而無需提供密碼;

第一種方式相信沒有用戶會(huì)接受殴蹄,沒有哪個(gè)用戶愿意把自己的用戶名和密碼暴露給其他人究抓。第二種方式就使用到OAuth協(xié)議了,它不需要提供用戶的密碼給第三方袭灯,第三方也能獲取到需要的數(shù)據(jù)刺下,這也是為什么我們需要OAuth的原因。

二稽荧、究竟什么是OAuth2.0橘茉?

OAuth 2.0?是目前最流行的授權(quán)機(jī)制,用來授權(quán)第三方應(yīng)用姨丈,獲取用戶數(shù)據(jù)畅卓。有了OAuth2.0以后,之前的問題就能這樣解決:用戶對(duì)第三方應(yīng)用進(jìn)行有限授權(quán)蟋恬,第三方應(yīng)用通過這個(gè)有限授權(quán)就能到對(duì)應(yīng)帳號(hào)服務(wù)器去獲取授權(quán)過的信息翁潘。

OAuth2.0的設(shè)計(jì)思想:

之前看到過這樣一個(gè)比喻,我覺得能非常形象的說明OAuth2.0的設(shè)計(jì)思想歼争,現(xiàn)在就拿過來用一下拜马,方便大家快速理解渗勘。

快遞員與小區(qū)門禁系統(tǒng):


1、每個(gè)小區(qū)都有門禁系統(tǒng)俩莽,輸入密碼可進(jìn)入小區(qū)旺坠,只有業(yè)主知道密碼

2、快遞員經(jīng)常進(jìn)入小區(qū)送快遞豹绪,快遞員有幾種方式進(jìn)入小區(qū):

???? A价淌、業(yè)主告訴快遞員門禁密碼申眼,快遞員通過輸入密碼進(jìn)入

???? B瞒津、業(yè)主遠(yuǎn)程為快遞員開門

???? C、為快遞員開辟一條新通道括尸,只用于送快遞到指定地點(diǎn):

????? ——》在門禁系統(tǒng)中增加“請(qǐng)求授權(quán)”按鍵

????? ——》快遞員按下按鈕請(qǐng)求業(yè)主授權(quán)進(jìn)入

????? ——》業(yè)主同意授權(quán)后給快遞員返回一個(gè)“有限密碼”

? ? ? ——》快遞員通過輸入這個(gè)密碼巷蚪,可以進(jìn)入到小區(qū)投遞快遞的地點(diǎn),但不能進(jìn)入其他地方濒翻。

前兩種方式都不是最優(yōu)的屁柏,首先小區(qū)密碼擁有很多權(quán)限,給快遞員非常不安全有送;其次淌喻,小區(qū)可能有很多門,快遞員每通過一個(gè)門業(yè)主就需要遠(yuǎn)程為他開一次門也很煩雀摘;第C種方式是最優(yōu)的裸删,它的設(shè)計(jì)思想用于互聯(lián)網(wǎng)就是OAuth2.0了。

OAuth2.0協(xié)議的相關(guān)術(shù)語

資源所有者(Resource Owner):擁有客戶端應(yīng)用程序想要訪問的數(shù)據(jù)的用戶阵赠。

客戶端(Client):想要訪問用戶數(shù)據(jù)的的應(yīng)用程序

授權(quán)服務(wù)端(Authorization

Server):通過用戶許可涯塔,授權(quán)客戶端訪問用戶數(shù)據(jù)的授權(quán)服務(wù)端。

資源服務(wù)端(Resource Server):存儲(chǔ)客戶端要訪問的數(shù)據(jù)的系統(tǒng)清蚀。在某些情況下匕荸,資源服務(wù)端和授權(quán)服務(wù)端是同一個(gè)服務(wù)端。

訪問令牌(Access Token):訪問令牌是客戶端可用于訪問資源服務(wù)端上用戶授權(quán)的數(shù)據(jù)的唯一密鑰枷邪。

Scope:授權(quán)范圍榛搔,用于限制應(yīng)用程序訪問用戶的哪些數(shù)據(jù)


OAuth2.0協(xié)議的基本流程

?

Access Token與密碼的異同:

1、Access Token與密碼一樣东揣,是獲取用戶數(shù)據(jù)的憑證践惑,泄漏AT與泄漏密碼后果一樣

2、Access Token是短期的救斑,到期自動(dòng)失效童本,用戶無法修改;密碼一般是長期有效脸候,不修改不會(huì)變化

3穷娱、Access Token可以被數(shù)據(jù)所有者撤銷绑蔫,撤銷后會(huì)立即生效,而密碼一般不允許被人撤銷

4泵额、Access Token有權(quán)限范圍即Scope配深,可以指定持有人只能做什么事情,而持有密碼的人擁有的是完整權(quán)限嫁盲,可以做所有的事情

Access Token的設(shè)計(jì)可以讓第三方應(yīng)用獲得相應(yīng)權(quán)限篓叶,又隨時(shí)可控,不會(huì)危及系統(tǒng)安全羞秤。

OAuth 2.0的四種方式

?這里主要介紹第一種缸托。

1、授權(quán)碼(authorization-code

指客戶端先獲取一個(gè)授權(quán)碼(Code)瘾蛋,再用授權(quán)碼換取Access

Token俐镐;

使用場景:客戶端有自己的后臺(tái)服務(wù)器

特點(diǎn):授權(quán)碼通過前端傳遞,而AT存儲(chǔ)在后臺(tái)服務(wù)器哺哼,通過后臺(tái)服務(wù)器與資源和授權(quán)服務(wù)器完成交互佩抹,前后端分離,非常安全


2取董、隱藏式

使用場景:純前端應(yīng)用棍苹,沒有后臺(tái)服務(wù)器

特點(diǎn):沒有授權(quán)碼,直接給前端頒發(fā)AT茵汰,AT存儲(chǔ)在前端枢里,不是很安全,適用于安全要求不高的場景

3经窖、密碼式

使用場景:高度信任某應(yīng)用坡垫,并且無法采用其他授權(quán)方式的情況

特點(diǎn):用戶直接將用戶名和密碼告訴第三方應(yīng)用,第三方應(yīng)用使用你的密碼去申請(qǐng)令牌

4画侣、憑證式

使用場景:沒有前端的命令行應(yīng)用

特點(diǎn):在命令行下請(qǐng)求令牌冰悠,直接信任第三方


Access Token過期問題

AT是有期限的,AT過期后就需要重新獲取配乱。

兩種方式:

1溉卓、按照之前的流程重新獲取一遍AT,這種體驗(yàn)不好搬泥;

2桑寨、OAuth2.0給出的方式是:在返回Access

Token的同時(shí)返回一個(gè)Refresh Token,當(dāng)AT(Access Token)過期以后忿檩,可以用RT(Refresh Token)去重新獲取AT尉尾。


以上就是我要分享的OAuth2.0內(nèi)容,希望能給大家的理解帶來益處燥透。接下來我還會(huì)分享OpenID Connect協(xié)議內(nèi)容沙咏。希望大家持續(xù)關(guān)注本帳號(hào)辨图。

后續(xù)筆者會(huì)不斷輸出相關(guān)領(lǐng)域的優(yōu)質(zhì)內(nèi)容,希望大家持續(xù)關(guān)注本帳號(hào)肢藐!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末故河,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子吆豹,更是在濱河造成了極大的恐慌鱼的,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件痘煤,死亡現(xiàn)場離奇詭異凑阶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)速勇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門晌砾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坎拐,“玉大人烦磁,你說我怎么就攤上這事『哂拢” “怎么了都伪?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長积担。 經(jīng)常有香客問我陨晶,道長,這世上最難降的妖魔是什么帝璧? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任先誉,我火速辦了婚禮,結(jié)果婚禮上的烁,老公的妹妹穿的比我還像新娘褐耳。我一直安慰自己,他們只是感情好渴庆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布铃芦。 她就那樣靜靜地躺著,像睡著了一般襟雷。 火紅的嫁衣襯著肌膚如雪刃滓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天耸弄,我揣著相機(jī)與錄音咧虎,去河邊找鬼。 笑死计呈,一個(gè)胖子當(dāng)著我的面吹牛砰诵,可吹牛的內(nèi)容都是我干的僚饭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼胧砰,長吁一口氣:“原來是場噩夢啊……” “哼鳍鸵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起尉间,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤偿乖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后哲嘲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贪薪,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年眠副,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了画切。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡囱怕,死狀恐怖霍弹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情娃弓,我是刑警寧澤典格,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站台丛,受9級(jí)特大地震影響耍缴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜挽霉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一防嗡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧侠坎,春花似錦蚁趁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至童芹,卻和暖如春涮瞻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背假褪。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來泰國打工署咽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓宁否,卻偏偏與公主長得像窒升,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子慕匠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容