为什么 OAuth 里除了 Access Token 之外,还需要 Refresh Token?

What is the purpose of a “Refresh Token”?

问题:我有一个与 YouTube Live Streaming API 集成的程序。我以每 50 分钟的时间间隔,使用刷新令牌(refresh token)获取一个新的访问令牌(Access Token)。 我的问题是,为什么 OAuth 要设计双重 token?

当我通过 YouTube 进行身份验证时,它给了我一个刷新令牌。然后我使用这个刷新令牌大约每小时获取一个新的访问令牌。 如果我有刷新令牌,我总是可以使用它来获取新的访问令牌,因为它永远不会过期。所以我不认为这比从一开始就给我一个访问令牌更安全。

回答

简单地说,刷新令牌用于获取新的访问令牌。

为了清楚地区分这两个令牌并避免混淆,以下是 OAuth 2.0 授权框架中给出的功能:

  • 访问令牌由授权服务器在资源所有者的批准下颁发给第三方客户端。客户端使用访问令牌访问由资源服务器托管的受保护资源。刷新令牌是用于获取访问令牌的凭据。

  • 刷新令牌由授权服务器颁发给客户端,用于在当前访问令牌失效或过期时获取新的访问令牌,或者获取具有相同或更窄范围的附加访问令牌。

出于安全原因,refresh_token 只与授权服务器交换,而 access_token 与资源服务器交换。这降低了“访问令牌有效期为一小时,刷新令牌有效期为一年或撤销前有效”与“访问令牌有效直至撤销而无需刷新”中长期存在的 access_token 泄漏的风险。

刷新令牌至少有两个用途。首先,刷新令牌是一种“证明”,表明 OAuth2 客户端已经从用户那里获得了访问其数据的许可,因此可以再次请求新的访问令牌,而无需用户通过整个 OAuth2 流程。其次,与长期访问令牌相比,它有助于增加整个安全流程。

刷新令牌作为不影响用户体验的一种方式

让我们用一个例子来谈谈第一个目的。假设您是一名用户,正在使用想要与您的 YouTube 帐户数据进行交互的第三方客户端网络应用程序。一旦您授予客户端应用程序使用您的 YouTube 数据的权限,您是否希望客户端应用程序在其 YouTube 令牌过期时再次提示您获得许可?如果 YouTube 令牌到期时间非常短(例如 5 分钟),会发生什么?

如果客户端应用程序至少每 5 分钟提示您一次许可,那会有点烦人! OAuth2 针对这个“问题”提出的解决方案是刷新令牌。通过使用刷新令牌,访问令牌可以保持短暂的生命周期(这在访问令牌以某种方式泄露或被盗的情况下是可取的),并且刷新令牌可以保持长期(更)生命周期,从而允许客户端获得新的访问权限令牌过期时无需用户再次许可。

但是为什么要刷新令牌呢?如果重点是不让用户使用权限请求,那么为什么客户端不能简单地说“嘿,授权服务器,我想要另一个访问令牌。而是,“嘿授权服务器,这是我过期的令牌,给我一个新的!”。刷新令牌作为一种“证明”,证明客户端在某个原始时间点被用户授予访问权限。该“证明”采用由授权服务器数字签名的刷新令牌的形式。通过客户端提供刷新令牌,授权服务器可以验证客户端在过去的某个时间点收到了用户的许可,并且客户端不必再次提示用户。

刷新令牌作为提高安全性的一种手段

然而,这提出了一个问题,“好吧,如果刷新令牌被泄露或被盗,或者只是被恶意客户端应用程序保留而没有应用户的要求将其删除,会发生什么?攻击者能不能继续使用刷新令牌无限期地(或直到它过期)获得有效的访问令牌?这个问题导致讨论我提到的第二个目的,刷新令牌有助于更安全的流程。

访问令牌出现的问题是,一旦获得,它们只会呈现给资源服务器(例如 YouTube)。因此,如果访问令牌被盗或泄露,您如何告诉资源服务器不要信任该令牌?好吧,你真的不能。唯一的方法是更改授权服务器上的私有签名密钥(首先对令牌进行签名的密钥)。

另一方面,刷新令牌需要频繁地提交给授权服务器,因此如果一个令牌被泄露,那么撤销或拒绝整个刷新令牌是微不足道的,而不必更改任何签名密钥。

(0)

相关推荐

  • Spring Cloud(6):保护微服务(Security)

    OAuth2是一个授权(Authorization)协议.我们要和Spring Security的认证(Authentication)区别开来,认证(Authentication)证明的你是不是这个人 ...

  • 单体应用到分布式再到微服务,用户认证和授权机制的演进史

    Web应用和用户的身份验证息息相关,从单一服务器架构到分布式服务架构再到微服务架构,用户安全认证和授权的机制也一直在演进,下文对各个架构下的认证机制做个总结. 单一服务器架构 该架构下后端只有一台服务 ...

  • IdentityServer4系列 | 初识基础知识点

    一.前言 我们现在日常生活中,会使用各式各样的应用程序,层出不穷,其中有基于网页浏览方式的应用,有基于手机端的App,甚至有基于流行的公众号和小程序等等,这些应用,我们不仅要实现各个应用的功能之外,还 ...

  • 第 88 天:OAuth2.0 客户端实战

    上一次课程,我们了解了 OAuth 认证是怎么回事,以及了解了四种认证方式,今天我们将以 Github 为例,了解一下如何用 Flask 第三方应用 在之前的介绍 JWT 的时候,了解过 Authli ...

  • 第 87 天:Python Web开发 OAuth2.0 简介

    随着互联网的发展,各种应用相互交叉,到处需要用户登录,信息安全成为了不可回避的问题,应用需要扩展,用户需要更好的体验,信息需要更安全的保障,为了满足这些需求,互联网技术不断推陈出新,从通信安全,到各种 ...

  • Oauth2详解

    Oauth2详解

  • API经济与实现之路

    API经济的兴起 在谈API经济之前,我们需要先了解API的概念. API的全称是Application Programming Interface,即应用编程接口,它是软件系统不同组成部分衔接的约定 ...

  • 授权认证(IdentityServer4)

    区别 OpenId: Authentication :认证 Oauth: Aurhorize :授权 输入账号密码,QQ确认输入了正确的账号密码可以登录 --->认证 下面需要勾选的复选框(获取 ...

  • 《西游记》里的“玉兔精”你还记得吗?她的100首经典歌曲送给你,赶快听听有没有你熟悉的!

    在上个世纪八十年代末至九十年代中期,李玲玉凭借一把柔美的嗓音开创了甜歌之路,被誉为"甜歌皇后". 由她演绎的<西游记>"玉兔精"给无数观众留下了深刻 ...

  • 中国最令世界瞩目的,就是在38万公里之外还飘着,中国红

    在很多时候,肯定会有很多人会想到一个问题,就是这个宇宙除了地球诞生了生命,还有其他的生命存在吗?这个问题困扰了人类很多年的时间,直至如今的二十一世纪,人类不断的发展,航天事业不断的进步,对宇宙的探索更 ...

  • 上班赚钱之外还可以做这四种小生意

    自信则是关键的一步.一个自信的人,不怕在人前展露自己的实力,因为他对自己有信心,一个自信的人,他可以以成熟的姿态和稳健的步伐走自己的人生之路.其实除了上班赚钱之外,有很多朋友会选择做生意赚钱,做生意的 ...

  • 蜀汉之外,还能找到5位,可以击败蜀汉五虎上将的名将吗

    刘备手下有5位特别优秀的大将,就是他的五虎上将,关羽.张飞.赵云.马超和黄忠,这5人也是三国时期,实力超群的5位大将,那么在三国中,还能找到5位,可以击败他们的大将吗? 三国名将如云,刘备手下除了五虎 ...

  • 从《红楼梦》里看育儿:你还在像赵姨娘一样教育孩子吗?

    作者:韩雪丽 <红楼梦>里贾环这个人物,非常不讨喜,在贾政眼中,人物猥琐,不让人喜欢,在丫环们眼中,感觉他小气自私. (一)贾环一出场,就感觉他很委屈 贾环的第一次出场,是大节下的跑梨香院 ...

  • 医药板块里,这只基金还不错

    4月初,我们对「大鱼计划」进行了调仓,新调进来5只基金,保留了3只基金,「大鱼计划」目前有8只我们认为不错的主动型基金. 我们选这些基金的理由是什么?为什么这些基金值得投资?之后的一些文章里,豆妹会给 ...

  • 晏非读诗第15期:想从地狱里出来比上天堂还难

    [晏非读诗]前段时间书博会去西安,恰逢<口语诗:事实的诗意>出版分享会,也恰好遇到了本诗的作者唐突,我第一次见他,却一眼就认出了他,究其原因,他的诗在新世纪诗典上给人留下了深刻印象.俩人坐 ...

  • 炸蘑菇,多加这一步,蘑菇外酥里嫩,比肉还香

    酥炸蘑菇 中国的菜技法可以用"千变万化"来形容,我们家里常用的无非就是炒.炖.熬.煎.炸.但今天我要说的是另外一种就是"挂糊",挂糊的种类又分为蛋清糊.蛋黄糊. ...

  • 蓝妖:月季花朵里很多小虫,花瓣还脏兮兮的?现在预防还来的及。

    这些天,很多花友的月季花都在陆续开放了,欣赏花朵美艳的同时,呼吸花香应该是最大的享受了.但是,如果一吸香味,就惹一鼻子小黑虫,那就有点..... 相信,最近很多花友都发现了这个问题,花朵里很大非常细小 ...