Oauth 2:为什么刷新令牌必须是有状态的?

2024-05-08

我正在开发一个基于 Node 的 SPA 应用程序,并使用 JWT 进行基于令牌的身份验证。目前,jwt 令牌永远不会过期,这不太好。

我希望它过期以提高安全性,但我不希望我的用户被迫重新登录。这就是为什么我需要刷新令牌。

所以我正在阅读有关 OAuth2 的内容。 我很难理解为什么刷新令牌必须存储在数据库中,而访问令牌是使用密钥动态生成的。 为什么刷新令牌不能以与访问令牌相同的方式生成?

感谢你们 !


刷新令牌的生成方式通常与访问令牌相同。 如果有请求,授权服务器通常会返回刷新和访问令牌(并且您没有使用隐式授予类型)。

区别在于它们的使用方式。

访问令牌通常是不记名令牌:任何拥有它的人都可以在资源服务器上使用它,但它仅在短时间内有效。在这种情况下,将它们存储在数据库中通常毫无意义,因为它们一旦过期就毫无价值。

然而,刷新令牌就像可以访问“锻造”,它允许您铸造新令牌。

如果您向授权服务器(而不是资源服务器)提供刷新令牌,您将得到一个新的访问令牌,并且可能还得到一个新的刷新令牌。 当然,前提是用户没有撤​​销/更改对您的应用程序的访问权限,并且该用户仍然是有效用户。

因此,您可能会将它们保存在数据库中,因为您的用户很少登录。因此,您可能在获得刷新令牌几周后就需要它。

刷新令牌的替代方案。

如果您使用隐式授权(这在 SPA 中很常见,但不推荐)。您可以尝试让最终用户登录到授权服务器使用的身份提供商。这样,您就可以继续从身份验证服务器请求新的访问令牌,而无需身份验证服务器提示用户输入凭据,因为会话将在身份提供者和用户的浏览器之间保留。

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

Oauth 2:为什么刷新令牌必须是有状态的? 的相关文章

随机推荐

  • Haskell,optparse-generic 的未命名命令行参数

    我在用着optparse 通用 https hackage haskell org package optparse generic解析名为的程序的命令行参数example 我有一个带有命名字段的数据类型 记录语法 例如 data Exam
  • 更新AWS S3过期时间

    我想知道如何延长密钥的有效期 我指的不是访问对象的签名 URL 而是密钥本身 我将 AWS 设置为存储桶中的所有对象应在 90 天后过期的规则 在大多数情况下 这就是我希望发生的事情 有时我需要将单个密钥的使用寿命最多再延长 90 天 事实
  • Spring 中 JavaConfig 相对于 XML 配置的优势?

    早些时候 配置曾经在代码中硬编码 后来它被外部化到 property 文件 为了避免硬编码值 避免为了更改配置而更改代码 等等 然后它转移到 XML 为了为了更加标准化 无错误等 现在 在阅读 Spring 3 中的 Configurati
  • 您应该在 Windows 8 应用程序的哪个位置编写“隐私策略”代码?

    我的应用程序未通过认证 原因是 4 1 1 如果您的应用程序具有网络功能 则必须有隐私声明 您必须在应用程序的说明页面以及 Windows 设置超级按钮中显示的应用程序设置中提供对隐私政策的访问权限 他们在说什么 什么描述 如何设置 Win
  • JBoss 中的 jndi.properties

    有没有办法配置 JNDI 以便查找首先检查 localhost 如果没有找到匹配的名称 则会自动发现其他 jndi 服务器 我对文档的理解是 这是使用集群时的默认行为 16 2 2 客户端配置 http docs jboss org jbo
  • Xpath 和通配符

    我尝试了几种组合但没有成功 该数据的完整 xpath 是 id detail row seek 37878 td问题是每个节点的数字部分 37878 都会发生变化 因此我无法使用 foreach 循环遍历节点 有没有办法使用通配符并将 xp
  • github 操作未收到机密

    我看过其他答案 但似乎都不起作用 我想我只是想用 Github Actions 做一些非常简单的事情 只需让 access key 可用于我的 github 操作 而不将其放入我的 github 存储库中 所以我认为我们可以创造action
  • 如何使用 Codable 解析此 JSON?

    我一直在尝试从我的中解析这个对象JSON并不断收到此错误 错误 类型不匹配 Swift Array Swift DecodingError Context codingPath debugDescription 本应解码数组 但找到了字典
  • Genymotion Google Nexus 6P 7.0.0 与 Open_Gapps 手臂 7.0.0

    With Genymotion 2 8 0 我已经安装了谷歌 Nexus 6P 7 0 0API 级别为 24 的设备 启动设备后 我刷新了 ARM 虚拟转换器并重新启动了设备 然后 我从下载 open gapps用于 Playstore
  • 网格属性不适用于网格容器内的元素

    我正在尝试定位嵌套li ul li ul li 在最顶层创建的 CSS 网格上ul 还没有爱 它不起作用 也许这是不可能的 或者我错过了什么 orgChart ul orgChartLevel1 display grid grid temp
  • JMeter:tearDown Thread Group的目的是什么

    我想了解JMeter中tearDown Thread Group的实际用法 在什么场景下可以使用tearDown Thread Group 根据提供的帮助JMeter 拆解线程组 http jmeter apache org userman
  • Java 中的逻辑回归

    我们需要用 Java 进行逻辑回归 我们在 Python 中使用了这段代码http blog smellthedata com 2009 06 python logistic regression with l2 html http blo
  • python:发送邮件,在“with”块内时失败

    我想知道为什么这段代码 test smtplib SMTP smtp gmail com 587 test ehlo test starttls test ehlo test login address passw test sendmai
  • Windows 中的信号处理

    在Windows中 我试图创建一个等待SIGINT信号的python进程 当它收到SIGINT时 我希望它只打印一条消息并等待SIGINT的另一次出现 所以我使用了信号处理程序 这是我的 signal receiver py 代码 impo
  • 获取运行时提供的类名的 n 维数组的类

    给定一个完全限定的类名和多个维度 我想获取该类的类名 我相信我可以这样做 public Class elementType Class forName className return Array newInstance elementTy
  • Android:实现使用内置电话堆栈的自定义 ConnectionService

    我正在尝试在我的自定义电话应用程序中实现自定义 ConnectionService 根据文档 http developer android com reference android telecom ConnectionService ht
  • java.util.Objects 与Optional 哪个更可取?

    The java util Objects http download java net java jdk9 docs api java util Objects html类通过许多新方法进行了扩展 对象 requireNonNullEls
  • 如何恢复 QSS 属性的默认系统值?

    如果父级之一将其样式表设置为 Qt QSS 会传播给子级color red 它的所有子级都将应用此样式表 如果你明确设置QLabel color red 那么只有 QLabel 子项会受到关注 如果子项设置自己的值 则可以覆盖子项的样式表c
  • 带操作栏的 requestFeature

    所以我正在查看 google 的操作栏 api 演示 他们有这个 The Action Bar is a window feature The feature must be requested before setting a conte
  • Oauth 2:为什么刷新令牌必须是有状态的?

    我正在开发一个基于 Node 的 SPA 应用程序 并使用 JWT 进行基于令牌的身份验证 目前 jwt 令牌永远不会过期 这不太好 我希望它过期以提高安全性 但我不希望我的用户被迫重新登录 这就是为什么我需要刷新令牌 所以我正在阅读有关