实现永不过期的 OAuth 刷新令牌

2024-02-10

在 OAuth 2 的上下文中,如何处理refresh_token过期,还是缺少?

我使用 JSON Web 令牌 (JWT) 作为access_token生命周期较短(20 分钟后过期)。据我了解,这意味着我不必存储access_token,仅验证它(并使用内部的可信信息,例如范围)。

不过,我想知道如何实现refresh_tokens。在我的研究中,我发现谷歌和其他公司已经refresh_token除非出于多种原因被撤销,否则它们将永远有效。我认为这意味着系统必须存储所有发出的刷新令牌,这样它们就可以被标记为已撤销。

当涉及到代币的存储时,这是一个问题吗?似乎您有一组潜在的无限令牌需要永久存储和访问。

我错过了什么吗?是否有实施刷新令牌的最佳实践?它们应该是(还是不是)JWT?即使使用 JWT,是否也应该存储 access_token?如果是这样,是否有任何理由让它们超过有效期? JWT 秘密会随着时间的推移而变化吗?


这是一个很好的问题,刷新令牌通常不会过期,因此应用程序可以生成新的访问令牌,而无需要求用户定期重新进行身份验证,

但应用程序需要对单个客户端允许的活动刷新令牌数量实施限制,例如:

每个 OAuth 客户端最多只能有 20 个活动的刷新令牌,如果达到该限制,则必须撤销最旧的令牌,并应在不拒绝请求的情况下授予新的令牌。

而且,如果刷新令牌在一段时间内(例如 6 个月)没有被消耗,那么该令牌也需要被撤销。

通过这种方式,你可以对refresh_token的消耗进行限制,这里有一个问题,谷歌也是这样做的,

Refer 谷歌 OAuth2 文档 https://developers.google.com/identity/protocols/OAuth2#expiration

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实现永不过期的 OAuth 刷新令牌 的相关文章

随机推荐

  • Mongodb查询异常慢

    我的 mongodb 相当简单 一个数据集 条目在 3 层上有大约 30 个属性 此类条目最多可包含 5000 个字符左右 我有 500k 个 当我执行以下查询时 db images find featureData cedd exists
  • 如何在不使用文本字段的情况下在 MySQL 数据库中存储哈希值

    我正在存储独特的用户代理在 MySQL MyISAM 表中 因此当我必须查看它是否存在于表中时 我会检查md5 hash它存储在 TEXT 字段旁边 User Agents id INT user agent TEXT hash VARCH
  • 如何在 typescript / Angular 中设置子 html 元素的样式

    我正在使用 ionic 3 构建混合移动应用程序 要求之一是用户能够动态更改工具栏颜色 页面渲染后 html 如下所示 div this div i can control div but this one is generated by
  • Aurelia 有虚拟元素吗?

    Knockout JS有虚拟元素的概念 这些是 无头 元素 您可以将其绑定到没有 HTML 元素作为容器的元素 这允许您在不发出外部 HTML 的容器中绑定数组 例如 在 Knockout JS 中 您可以执行以下操作 li li 一系列l
  • 防止 WPF DataGrid 中的多行选择

    我在 WPF DataGrid 中有以下 XAML 标记
  • NLTK python 错误:“TypeError:‘dict_keys’对象不可下标”

    我正在按照课堂作业的说明进行操作 并且应该在文本文件中查找最常用的 200 个单词 这是代码的最后一部分 fdist1 FreqDist NSmyText vocab fdist1 keys vocab 200 但是当我在 vocab 20
  • Pickle:类型错误:需要类似字节的对象,而不是“str”[重复]

    这个问题在这里已经有答案了 当我在 python 3 中运行以下代码时 我不断收到此错误 fname1 auth cache s username fname fname1 encode encoding utf 8 fname fname
  • 自定义图像视图android

    我的自定义视图如下所示 package com mypackage import java util ArrayList import java util List import android content Context import
  • 以数组形式返回 group_concat 数据

    我想返回使用 group concat 作为数据数组从数据库检索的值 是否可以在 mysql 查询中执行此操作 或者我需要将数据分解成数组吗 GROUP CONCAT sh hold id as holds 返回这个 holds gt 3
  • 为什么从对象继承在 Python 中会有所不同? [复制]

    这个问题在这里已经有答案了 当类从无继承时 我有一个实例类型的对象 gt gt gt class A pass gt gt gt a A gt gt gt type a
  • 将 AVAssetWriter 与原始 NAL 单元结合使用

    我在 iOS 文档中注意到AVAssetWriterInput你可以通过nil为了outputSettings字典来指定输入数据不应重新编码 用于对附加到输出的媒体进行编码的设置 传递 nil 来指定不应重新编码附加的样本 我想利用此功能来
  • 如何为TableView创建NSIndexPath

    我需要在我定义的函数中删除表的第 1 行 为了使用deleteRowAtIndexPath你必须使用一个IndexPath定义了部分和行 如何创建这样的索引路径 以 int 1 作为唯一成员的数组将会崩溃 NSLog 消息指出该部分也需要定
  • pandas 按日期和年份分组并汇总金额

    我有这样的熊猫数据框 d dollar amount 200 25 350 00 120 00 400 50 1231 25 700 00 350 00 200 25 2340 00 date 22 01 2010 22 01 2010 2
  • 调试时如何跳出while循环

    在 Eclipse 中调试期间 我的代码进入了 while 循环 我不想循环直到满足条件 所以请告诉我如何在调试期间退出 while 循环 我看到 F7 在调试菜单下被禁用 请参阅此处的屏幕截图 You can select the lin
  • javascript 函数 btoa 的 C# 版本

    我需要将一些内容从 js 重新编码为 c 利用 js 中的 btoa 方法对一串 unicode 字符将它们转换为 base64 但是 据我所知 javascrpt 使用的编码与 c 中可用的所有编码不同 我需要编码完全相同 并且不会在这些
  • 如何在perl中验证数字?

    我知道有一个图书馆可以做到这一点 使用 Scalar Util qw looks like number 但我想使用 perl 正则表达式来做到这一点 我希望它适用于双数 而不仅仅是整数 所以我想要比这更好的东西 var d thanks
  • 从 OKHTTP 下载二进制文件

    我在我的 Android 应用程序中使用 OKHTTP 客户端进行网络连接 This https stackoverflow com questions 25367888 upload binary file with okhttp fro
  • Xpath获取上面的元素

    假设我有这样的结构 div class a div class b span Text Example span div div 在 xpath 中 我想检索属性 attribute 的值 因为我里面有文本 文本示例 如果我使用这个 xpa
  • 如何在VBA中实现消失动画?

    我正在尝试在 VBA 过程中测试形状上的动画效果 我已经实现了一个目标 即在主序列 定义在哪个位置Timeline 但我无法创建消失的动画 我在代码的开头检查了一些已经存在的 并且 EffectType 似乎返回与相关出现的动画相同的值 因
  • 实现永不过期的 OAuth 刷新令牌

    在 OAuth 2 的上下文中 如何处理refresh token过期 还是缺少 我使用 JSON Web 令牌 JWT 作为access token生命周期较短 20 分钟后过期 据我了解 这意味着我不必存储access token 仅验