JWT和Oauth2的區(qū)別和聯(lián)系

既然是區(qū)別和聯(lián)系钧椰,首先就要分別對(duì)雙方的內(nèi)容思想有所了解:

Oauth2:

??????? 是一種安全的授權(quán)框架,提供了一套詳細(xì)的授權(quán)機(jī)制符欠。用戶或應(yīng)用可以通過公開的或私有的設(shè)置嫡霞,授權(quán)第三方應(yīng)用訪問特定資源。它詳細(xì)描述了系統(tǒng)中不同角色希柿、用戶诊沪、服務(wù)前端應(yīng)用(比如API),以及客戶端(比如網(wǎng)站或移動(dòng)App)之間怎么實(shí)現(xiàn)相互認(rèn)證曾撤。

??????? Oauth2定義了一組想當(dāng)復(fù)雜的規(guī)范端姚。涉及到:Roles角色、Client Types客戶端類型挤悉、Client Profile客戶端描述渐裸、Authorization Grants認(rèn)證授權(quán)、Endpoints終端等装悲。

JWT:

??????? 提供了一種用于發(fā)布接入令牌(Access Token),并對(duì)發(fā)布的簽名接入令牌進(jìn)行驗(yàn)證的方法昏鹃。 令牌(Token)本身包含了一系列聲明,應(yīng)用程序可以根據(jù)這些聲明限制用戶對(duì)資源的訪問衅斩。

??????? JWT是一種安全標(biāo)準(zhǔn)盆顾。基本思路就是用戶提供用戶名和密碼給認(rèn)證服務(wù)器畏梆,服務(wù)器驗(yàn)證用戶提交信息信息的合法性您宪;如果驗(yàn)證成功,會(huì)產(chǎn)生并返回一個(gè)Token(令牌)奠涌,用戶可以使用這個(gè)token訪問服務(wù)器上受保護(hù)的資源宪巨。

??????? 一個(gè)token包含三部分:headerclaims溜畅、signature

??????? header:? 頭部分簡(jiǎn)單聲明了類型(JWT)以及產(chǎn)生簽名所使用的算法捏卓。

????????{ "alg" :"AES256", "typ" :"JWT"}

??????? claims:? 聲明

??????? 聲明部分是整個(gè)token的核心,表示要發(fā)送的用戶詳細(xì)信息慈格。有些情況下怠晴,我們很可能要在一個(gè)服務(wù)器上實(shí)現(xiàn)認(rèn)證遥金,然后訪問另一臺(tái)服務(wù)器上的資源;或者蒜田,通過單獨(dú)的接口來生成token稿械,token被保存在應(yīng)用程序客戶端(比如瀏覽器)使用。 以下一個(gè)簡(jiǎn)單的聲明例子:

??????? { "sub":"1234567890", "name":"John Doe", "admin":true}

??????? Signature:? 簽名

??????? 簽名的目的是為了保證上邊兩部分信息不被篡改冲粤。如果嘗試使用Bas64對(duì)解碼后的token進(jìn)行修改美莫,簽名信息就會(huì)失效。一般使用一個(gè)私鑰(private key)通過特定算法對(duì)Header和Claims進(jìn)行混淆產(chǎn)生簽名信息梯捕,所以只有原始的token才能于簽名信息匹配厢呵。

??????? 這里有一個(gè)重要的實(shí)現(xiàn)細(xì)節(jié)。只有獲取了私鑰的應(yīng)用程序(比如服務(wù)器端應(yīng)用)才能完全認(rèn)證token包含聲明信息的合法性傀顾。所以襟铭,永遠(yuǎn)不要把私鑰信息放在客戶端(比如瀏覽器)。


JWT和Oauth2的應(yīng)用場(chǎng)景的區(qū)別:

jwt應(yīng)用場(chǎng)景:? 無狀態(tài)的分布式API

??????? JWT的主要優(yōu)勢(shì)在于使用無狀態(tài)锣笨、可擴(kuò)展的方式處理應(yīng)用中的用戶會(huì)話蝌矛。服務(wù)端可以通過內(nèi)嵌的聲明信息,很容易地獲取用戶的會(huì)話信息错英,而不需要去訪問用戶或會(huì)話的數(shù)據(jù)庫。在一個(gè)分布式的面向服務(wù)的框架中隆豹,這一點(diǎn)非常有用椭岩。

但是,如果系統(tǒng)中需要使用黑名單實(shí)現(xiàn)長(zhǎng)期有效的token刷新機(jī)制璃赡,這種無狀態(tài)的優(yōu)勢(shì)就不明顯了判哥。

優(yōu)勢(shì)

??????? 快速開發(fā)

??????? 不需要cookie

??????? JSON在移動(dòng)端的廣泛應(yīng)用

??????? 不依賴于社交登錄

??????? 相對(duì)簡(jiǎn)單的概念理解

限制

??????? Token有長(zhǎng)度限制

??????? Token不能撤銷

??????? 需要token有失效時(shí)間限制(exp)

Oauth2應(yīng)用場(chǎng)景:

1)外包認(rèn)證服務(wù)器

??????? 上邊已經(jīng)討論過,如果不介意API的使用依賴于外部的第三方認(rèn)證提供者碉考,你可以簡(jiǎn)單地把認(rèn)證工作留給認(rèn)證服務(wù)商去做塌计。

??????? 也就是常見的,去認(rèn)證服務(wù)商(比如facebook)那里注冊(cè)你的應(yīng)用侯谁,然后設(shè)置需要訪問的用戶信息锌仅,比如電子郵箱、姓名等墙贱。當(dāng)用戶訪問站點(diǎn)的注冊(cè)頁面時(shí)热芹,會(huì)看到連接到第三方提供商的入口。用戶點(diǎn)擊以后被重定向到對(duì)應(yīng)的認(rèn)證服務(wù)商網(wǎng)站惨撇,獲得用戶的授權(quán)后就可以訪問到需要的信息伊脓,然后重定向回來。

優(yōu)勢(shì)

??????? 快速開發(fā)

??????? 實(shí)施代碼量小

??????? 維護(hù)工作減少

2)大型企業(yè)解決方案

??????? 如果設(shè)計(jì)的API要被不同的App使用魁衙,并且每個(gè)App使用的方式也不一樣报腔,使用OAuth2是個(gè)不錯(cuò)的選擇株搔。

??????? 考慮到工作量,可能需要單獨(dú)的團(tuán)隊(duì)纯蛾,針對(duì)各種應(yīng)用開發(fā)完善邪狞、靈活的安全策略。當(dāng)然需要的工作量也比較大茅撞!這一點(diǎn)帆卓,OAuth2的作者也指出過:

優(yōu)勢(shì)

??????? 靈活的實(shí)現(xiàn)方式

??????? 可以和JWT同時(shí)使用

??????? 可針對(duì)不同應(yīng)用擴(kuò)展


總結(jié):

??????? 總而言之,Oauth2和jwt是完全不同的兩種東西米丘,一個(gè)是授權(quán)認(rèn)證的框架剑令,另一種則是認(rèn)證驗(yàn)證的方式方法(輕量級(jí)概念)。OAuth2不像JWT一樣是一個(gè)嚴(yán)格的標(biāo)準(zhǔn)協(xié)議拄查,因此在實(shí)施過程中更容易出錯(cuò)吁津。盡管有很多現(xiàn)有的庫,但是每個(gè)庫的成熟度也不盡相同堕扶,同樣很容易引入各種錯(cuò)誤碍脏。在常用的庫中也很容易發(fā)現(xiàn)一些安全漏洞。

注意:

??????? 兩種方案都需要SSL安全保護(hù)稍算,也就是對(duì)要傳輸?shù)臄?shù)據(jù)進(jìn)行加密編碼典尾。安全地傳輸用戶提供的私密信息,在任何一個(gè)安全的系統(tǒng)里都是必要的糊探。否則任何人都可以通過侵入私人wifi钾埂,在用戶登錄的時(shí)候竊取用戶的用戶名和密碼等信息。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末科平,一起剝皮案震驚了整個(gè)濱河市褥紫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瞪慧,老刑警劉巖髓考,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異弃酌,居然都是意外死亡氨菇,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門矢腻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來门驾,“玉大人,你說我怎么就攤上這事多柑∧淌牵” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)聂沙。 經(jīng)常有香客問我秆麸,道長(zhǎng),這世上最難降的妖魔是什么及汉? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任沮趣,我火速辦了婚禮,結(jié)果婚禮上坷随,老公的妹妹穿的比我還像新娘房铭。我一直安慰自己,他們只是感情好温眉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布缸匪。 她就那樣靜靜地躺著,像睡著了一般类溢。 火紅的嫁衣襯著肌膚如雪凌蔬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天闯冷,我揣著相機(jī)與錄音砂心,去河邊找鬼。 笑死蛇耀,一個(gè)胖子當(dāng)著我的面吹牛辩诞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蒂窒,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼躁倒,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了洒琢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤褐桌,失蹤者是張志新(化名)和其女友劉穎衰抑,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荧嵌,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呛踊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了啦撮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谭网。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖赃春,靈堂內(nèi)的尸體忽然破棺而出愉择,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布锥涕,位于F島的核電站衷戈,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏层坠。R本人自食惡果不足惜殖妇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望破花。 院中可真熱鬧谦趣,春花似錦、人聲如沸座每。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尺栖。三九已至嫡纠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間延赌,已是汗流浹背除盏。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留挫以,地道東北人者蠕。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像掐松,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子大磺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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