OAuth2.0詳解

寫(xiě)在前面

OAuth2.0用簡(jiǎn)練的話來(lái)解釋,就是一個(gè)授權(quán)框架,它能使第三方應(yīng)用在不需要用戶憑證的情況下突勇,獲得被保護(hù)的資源装盯。
當(dāng)然這里還是得解釋兩句,想象一下甲馋,微信讀書(shū)App希望獲得微信的用戶頭像埂奈、昵稱等信息。最暴利的方式定躏,就是微信讀書(shū)App直接拿著微信的登錄名/密碼去訪問(wèn)微信账磺,從而得到相關(guān)信息。這里的微信登錄名/密碼就是上面說(shuō)的用戶憑證痊远。這種實(shí)現(xiàn)既不優(yōu)雅也不現(xiàn)實(shí)垮抗。因此得有一種方法,vx可以提供臨時(shí)性的認(rèn)證方式碧聪,讓這一次第三方應(yīng)用的訪問(wèn)需求可以實(shí)現(xiàn)冒版。
這種臨時(shí)性的方案需要做到兩點(diǎn):

  • 非用戶憑證
  • 具有臨時(shí)性,也就是說(shuō)僅在一段時(shí)間內(nèi)有效
    因此OAuth2.0的解決方案就是通過(guò)頒發(fā)訪問(wèn)令牌的方式實(shí)現(xiàn)逞姿。
    下面的解釋我們都已[微信讀書(shū)]通過(guò)[微信]第三方登錄來(lái)進(jìn)行解釋和描述辞嗡。

應(yīng)用注冊(cè)

在使用OAuth之前,需要對(duì)服務(wù)進(jìn)行注冊(cè)哼凯,也就是說(shuō)[微信讀書(shū)]需要[微信]提供第三方登錄的功能欲间,需要提前在[微信]掛號(hào),[微信]需要對(duì)這類App提前進(jìn)行資格審查断部,從而在正式使用中猎贴,[微信]知道是誰(shuí)向其提交的第三方登錄的申請(qǐng)。
在[微信開(kāi)放平臺(tái)]的官方文檔中蝴光,涉及到微信登錄功能也提到這一點(diǎn):


微信登錄準(zhǔn)備工作.png

可以看到她渴,經(jīng)過(guò)應(yīng)用注冊(cè),[微信讀書(shū)]最終會(huì)獲得AppId和AppSecret蔑祟。

授權(quán)碼模式

OAuth2.0有多種授權(quán)方式趁耗,其中,授權(quán)碼模式應(yīng)用最為廣泛疆虚,因?yàn)樗槍?duì)服務(wù)器端的應(yīng)用進(jìn)行了優(yōu)化苛败,上文我們說(shuō)到的AppSecret被安全的維護(hù)在應(yīng)用程序的服務(wù)端([微信讀書(shū)])。但是這種模式径簿,是基于重定向的流程罢屈,這意味著應(yīng)用程序必須能夠與用戶代理(即用戶的網(wǎng)絡(luò)瀏覽器)進(jìn)行交互,并接收通過(guò)用戶代理路由的API授權(quán)代碼篇亭。

授權(quán)碼模式流程.png

step1: 應(yīng)用服務(wù)請(qǐng)求第三方授權(quán)
這個(gè)過(guò)程中缠捌,請(qǐng)求中會(huì)帶上上文提到的app_id以表明身份;redirect_url當(dāng)授權(quán)成功后重定向地址译蒂;response_type=code曼月,表明請(qǐng)求對(duì)象是授權(quán)碼谊却;scope標(biāo)識(shí),標(biāo)識(shí)請(qǐng)求的權(quán)限范圍哑芹,在[微信開(kāi)放平臺(tái)]的官方文檔中炎辨,這個(gè)字段要求固定為某字段:
微信開(kāi)放平臺(tái)對(duì)scope的要求.png

step2:在應(yīng)用程序申請(qǐng)第三方授權(quán)后,第三方服務(wù)收到請(qǐng)求绩衷,并在已登錄的情況下蹦魔,對(duì)這次請(qǐng)求進(jìn)行接受或拒絕操作激率。如果接受咳燕,如圖中第三步所示。
step3:通過(guò)第一步指定的redirect_url返回code(授權(quán)碼)
step4:通過(guò)code乒躺、app_id招盲、"app_secret"三元組向第三方服務(wù)[微信]申請(qǐng)access_token;
獲取access_token的過(guò)程為什么非得需要前置獲取code呢嘉冒,筆者認(rèn)為主要是從安全性考慮曹货,防止app_id、"app_secret"泄露讳推。每個(gè)code都是user在一定時(shí)間內(nèi)主動(dòng)接受授權(quán)請(qǐng)求的情況下產(chǎn)生的顶籽,因此能保證時(shí)效性和風(fēng)險(xiǎn)的最小化。
step5:權(quán)限服務(wù)([微信])返回access_token給應(yīng)用服務(wù)([微信讀書(shū)])银觅。
通過(guò)上面的5步操作礼饱,應(yīng)用程序就獲得了第三方服務(wù)的access_token。需要注意的是究驴,這個(gè)token是對(duì)于第三方服務(wù)的token镊绪,它意味著應(yīng)用服務(wù)([微信讀書(shū)])可以通過(guò)access_token訪問(wèn)第三方服務(wù)([微信]),獲得第三方服務(wù)的相關(guān)數(shù)據(jù)信息,比如用戶信息等洒忧。
微信讀書(shū)第三方.png

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蝴韭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子熙侍,更是在濱河造成了極大的恐慌榄鉴,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛉抓,死亡現(xiàn)場(chǎng)離奇詭異庆尘,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)芝雪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)减余,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人惩系,你說(shuō)我怎么就攤上這事位岔∪缟福” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵抒抬,是天一觀的道長(zhǎng)杨刨。 經(jīng)常有香客問(wèn)我,道長(zhǎng)擦剑,這世上最難降的妖魔是什么妖胀? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮惠勒,結(jié)果婚禮上赚抡,老公的妹妹穿的比我還像新娘。我一直安慰自己纠屋,他們只是感情好涂臣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著售担,像睡著了一般赁遗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上族铆,一...
    開(kāi)封第一講書(shū)人閱讀 51,598評(píng)論 1 305
  • 那天岩四,我揣著相機(jī)與錄音,去河邊找鬼哥攘。 笑死剖煌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的献丑。 我是一名探鬼主播末捣,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼创橄!你這毒婦竟也來(lái)了箩做?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤妥畏,失蹤者是張志新(化名)和其女友劉穎邦邦,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體醉蚁,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡燃辖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了网棍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片黔龟。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出氏身,到底是詐尸還是另有隱情巍棱,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布蛋欣,位于F島的核電站航徙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏陷虎。R本人自食惡果不足惜到踏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望尚猿。 院中可真熱鬧窝稿,春花似錦、人聲如沸谊路。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)缠劝。三九已至,卻和暖如春骗灶,著一層夾襖步出監(jiān)牢的瞬間惨恭,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工耙旦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留脱羡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓免都,卻偏偏與公主長(zhǎng)得像锉罐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子绕娘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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

  • 原文地址:http://www.sanjinbest.com/blog/b6ec839d56c04ca387b95...
    木子小三金閱讀 8,573評(píng)論 0 37
  • 在上一篇文章《華為帳號(hào)服務(wù)學(xué)習(xí)筆記(一):什么是HMS脓规,什么是華為帳號(hào)服務(wù)》中已經(jīng)給大家整理了一下華為帳號(hào)服務(wù)的使...
    Coding小蜜蜂閱讀 424評(píng)論 0 0
  • OAuth 是一個(gè)開(kāi)放標(biāo)準(zhǔn)的授權(quán)框架,它為第三方應(yīng)用獲取資源所有者在資源所在系統(tǒng)或應(yīng)用上的部分資源提供了一種解決方...
    校長(zhǎng)_x閱讀 6,304評(píng)論 0 5
  • OAuth2.0有五種授權(quán)模式险领。 (1)授權(quán)碼模式(Authorization Code) (2)授權(quán)碼簡(jiǎn)化模式(...
    zllylgw閱讀 188評(píng)論 0 0
  • 簡(jiǎn)介 OAuth2.0是一個(gè)開(kāi)放侨舆、授權(quán)的行業(yè)標(biāo)準(zhǔn)協(xié)議。廣泛用于某些知名網(wǎng)站(例如QQ绢陌、微信挨下、微博等)授權(quán)第三方應(yīng)用...
    呼呼菜菜閱讀 621評(píng)論 0 5