一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

為什么 OAuth 里除了 Access Token 之外,還需要 Refresh Token?

 汪子熙 2021-07-27

What is the purpose of a “Refresh Token”?

問(wèn)題:我有一個(gè)與 YouTube Live Streaming API 集成的程序。我以每 50 分鐘的時(shí)間間隔,使用刷新令牌(refresh token)獲取一個(gè)新的訪問(wèn)令牌(Access Token)。 我的問(wèn)題是,為什么 OAuth 要設(shè)計(jì)雙重 token?

當(dāng)我通過(guò) YouTube 進(jìn)行身份驗(yàn)證時(shí),它給了我一個(gè)刷新令牌。然后我使用這個(gè)刷新令牌大約每小時(shí)獲取一個(gè)新的訪問(wèn)令牌。 如果我有刷新令牌,我總是可以使用它來(lái)獲取新的訪問(wèn)令牌,因?yàn)樗肋h(yuǎn)不會(huì)過(guò)期。所以我不認(rèn)為這比從一開(kāi)始就給我一個(gè)訪問(wèn)令牌更安全。

回答

簡(jiǎn)單地說(shuō),刷新令牌用于獲取新的訪問(wèn)令牌。

為了清楚地區(qū)分這兩個(gè)令牌并避免混淆,以下是 OAuth 2.0 授權(quán)框架中給出的功能:

  • 訪問(wèn)令牌由授權(quán)服務(wù)器在資源所有者的批準(zhǔn)下頒發(fā)給第三方客戶(hù)端??蛻?hù)端使用訪問(wèn)令牌訪問(wèn)由資源服務(wù)器托管的受保護(hù)資源。刷新令牌是用于獲取訪問(wèn)令牌的憑據(jù)。

  • 刷新令牌由授權(quán)服務(wù)器頒發(fā)給客戶(hù)端,用于在當(dāng)前訪問(wèn)令牌失效或過(guò)期時(shí)獲取新的訪問(wèn)令牌,或者獲取具有相同或更窄范圍的附加訪問(wèn)令牌。

出于安全原因,refresh_token 只與授權(quán)服務(wù)器交換,而 access_token 與資源服務(wù)器交換。這降低了“訪問(wèn)令牌有效期為一小時(shí),刷新令牌有效期為一年或撤銷(xiāo)前有效”與“訪問(wèn)令牌有效直至撤銷(xiāo)而無(wú)需刷新”中長(zhǎng)期存在的 access_token 泄漏的風(fēng)險(xiǎn)。

刷新令牌至少有兩個(gè)用途。首先,刷新令牌是一種“證明”,表明 OAuth2 客戶(hù)端已經(jīng)從用戶(hù)那里獲得了訪問(wèn)其數(shù)據(jù)的許可,因此可以再次請(qǐng)求新的訪問(wèn)令牌,而無(wú)需用戶(hù)通過(guò)整個(gè) OAuth2 流程。其次,與長(zhǎng)期訪問(wèn)令牌相比,它有助于增加整個(gè)安全流程。

刷新令牌作為不影響用戶(hù)體驗(yàn)的一種方式

讓我們用一個(gè)例子來(lái)談?wù)劦谝粋€(gè)目的。假設(shè)您是一名用戶(hù),正在使用想要與您的 YouTube 帳戶(hù)數(shù)據(jù)進(jìn)行交互的第三方客戶(hù)端網(wǎng)絡(luò)應(yīng)用程序。一旦您授予客戶(hù)端應(yīng)用程序使用您的 YouTube 數(shù)據(jù)的權(quán)限,您是否希望客戶(hù)端應(yīng)用程序在其 YouTube 令牌過(guò)期時(shí)再次提示您獲得許可?如果 YouTube 令牌到期時(shí)間非常短(例如 5 分鐘),會(huì)發(fā)生什么?

如果客戶(hù)端應(yīng)用程序至少每 5 分鐘提示您一次許可,那會(huì)有點(diǎn)煩人! OAuth2 針對(duì)這個(gè)“問(wèn)題”提出的解決方案是刷新令牌。通過(guò)使用刷新令牌,訪問(wèn)令牌可以保持短暫的生命周期(這在訪問(wèn)令牌以某種方式泄露或被盜的情況下是可取的),并且刷新令牌可以保持長(zhǎng)期(更)生命周期,從而允許客戶(hù)端獲得新的訪問(wèn)權(quán)限令牌過(guò)期時(shí)無(wú)需用戶(hù)再次許可。

但是為什么要刷新令牌呢?如果重點(diǎn)是不讓用戶(hù)使用權(quán)限請(qǐng)求,那么為什么客戶(hù)端不能簡(jiǎn)單地說(shuō)“嘿,授權(quán)服務(wù)器,我想要另一個(gè)訪問(wèn)令牌。而是,“嘿授權(quán)服務(wù)器,這是我過(guò)期的令牌,給我一個(gè)新的!”。刷新令牌作為一種“證明”,證明客戶(hù)端在某個(gè)原始時(shí)間點(diǎn)被用戶(hù)授予訪問(wèn)權(quán)限。該“證明”采用由授權(quán)服務(wù)器數(shù)字簽名的刷新令牌的形式。通過(guò)客戶(hù)端提供刷新令牌,授權(quán)服務(wù)器可以驗(yàn)證客戶(hù)端在過(guò)去的某個(gè)時(shí)間點(diǎn)收到了用戶(hù)的許可,并且客戶(hù)端不必再次提示用戶(hù)。

刷新令牌作為提高安全性的一種手段

然而,這提出了一個(gè)問(wèn)題,“好吧,如果刷新令牌被泄露或被盜,或者只是被惡意客戶(hù)端應(yīng)用程序保留而沒(méi)有應(yīng)用戶(hù)的要求將其刪除,會(huì)發(fā)生什么?攻擊者能不能繼續(xù)使用刷新令牌無(wú)限期地(或直到它過(guò)期)獲得有效的訪問(wèn)令牌?這個(gè)問(wèn)題導(dǎo)致討論我提到的第二個(gè)目的,刷新令牌有助于更安全的流程。

訪問(wèn)令牌出現(xiàn)的問(wèn)題是,一旦獲得,它們只會(huì)呈現(xiàn)給資源服務(wù)器(例如 YouTube)。因此,如果訪問(wèn)令牌被盜或泄露,您如何告訴資源服務(wù)器不要信任該令牌?好吧,你真的不能。唯一的方法是更改授權(quán)服務(wù)器上的私有簽名密鑰(首先對(duì)令牌進(jìn)行簽名的密鑰)。

另一方面,刷新令牌需要頻繁地提交給授權(quán)服務(wù)器,因此如果一個(gè)令牌被泄露,那么撤銷(xiāo)或拒絕整個(gè)刷新令牌是微不足道的,而不必更改任何簽名密鑰。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多

    精品精品国产欧美在线| 欧美美女视频在线免费看| 国产午夜福利片在线观看| 99久久精品午夜一区二区| 国产午夜精品美女露脸视频| 日本加勒比系列在线播放| 欧美三级大黄片免费看| 精品国产av一区二区三区不卡蜜| 亚洲欧美日韩国产综合在线| 日韩精品第一区二区三区| 午夜日韩在线观看视频| 亚洲内射人妻一区二区| 日本午夜免费福利视频| 国产伦精品一区二区三区精品视频| 中文字幕乱码免费人妻av| 视频一区日韩经典中文字幕| 欧美精品在线观看国产| 午夜精品一区二区三区国产| 99久久精品国产日本| 欧美性猛交内射老熟妇| 欧美日韩亚洲国产综合网 | 永久福利盒子日韩日韩| 色播五月激情五月婷婷| 五月婷婷缴情七月丁香| 99久久国产精品亚洲| av国产熟妇露脸在线观看| 加勒比日本欧美在线观看| 国产丝袜美女诱惑一区二区| 日木乱偷人妻中文字幕在线| 国产三级视频不卡在线观看| 亚洲精品美女三级完整版视频| 精品香蕉国产一区二区三区| 午夜福利大片亚洲一区| 日韩专区欧美中文字幕| 欧美做爰猛烈叫床大尺度| 欧美一区二区黑人在线| 免费高清欧美一区二区视频| 国产在线小视频你懂的| 九九热精彩视频在线播放| 人妻内射在线二区一区| 国自产拍偷拍福利精品图片|