刷新令牌如何比长期存在的 JWT 更安全?

2024-01-06

在将 JWT 与自然不安全的客户端(浏览器、手机等)一起使用时,我很难理解刷新令牌的使用。

对我来说,如果 JWT 被泄露,那么刷新令牌也不会被泄露,这种想法似乎很天真。

只要刷新令牌保持有效,攻击者本质上就拥有无限的 JWT 来源。即使您使使用的刷新令牌无效,如果攻击者实施稍微更激进的刷新策略,他们仍然占据上风。这与受损的长寿命 JWT 有什么不同?

当使用长期存在的 JWT 时,攻击者只有能够持续利用最初为他们提供 JWT 的任何漏洞,才能继续获取有效的 JWT。通过刷新令牌,他们可以通过漏洞获取 JWT 一次,然后不受惩罚地获取新的 JWT。这看起来要么与长期存在的 JWT 一样安全,要么甚至不太安全。

我缺少什么?


刷新令牌是可撤销的。如果它们被泄露,它们可以立即在授权服务器上被撤销,并且不会再生成 JWT。

另一方面,JWT 通常是独立的。这意味着它们是通过检查令牌的数字签名在本地进行验证的。一旦发布就不能撤销。这就是为什么它们永远不应该长寿。

如果 JWT 和刷新令牌都被泄露,您将撤销刷新令牌,一旦 JWT 过期,攻击者将无法获得访问权限。这可能意味着撤销不会立即进行。

另一种选择是使用长期引用令牌而不是 JWT 和刷新令牌。在这种情况下,可以立即撤销。缺点是引用令牌的每次使用都需要针对授权服务器进行验证。

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

刷新令牌如何比长期存在的 JWT 更安全? 的相关文章

  • 无效数据的 REST 响应代码

    如果出现以下情况 应将什么响应代码传递给客户端 用户注册时传递了无效数据 例如电子邮件格式错误 用户名 电子邮件已存在 我选择了403 我还发现了以下我觉得可以用的 维基百科 412 前提条件失败 服务器不满足请求者要求的先决条件之一 提出
  • ClientAuthError:令牌续订操作由于超时而失败 MSAL Angular

    我是 MSAL 新人 所以我只遵循从这里实现它的基本设置https github com AzureAD microsoft authentication library for js blob dev lib msal angular R
  • django-rest-swagger 与模型序列化器不能很好地配合吗?

    我已经离开了 django rest swagger 的文档github页面 https github com marcgibbons django rest swagger 更具体地说 是 它是如何工作的 部分 它表明您可以为其余 api
  • REST api 可以通过两个 HTTP 方法公开吗?

    问题是我们有一个复杂的搜索 api 查询字符串 并且希望让用户可以方便地使用 body 所以我们希望同时允许 GET 和 POST 或 PUT 我知道 对于搜索是否为只读操作存在争论 并且根据 REST 标准 它应该只能是 GET 据我了解
  • 使用 JWT 创建 Firebase 自定义身份验证令牌

    为了创建 firebase 自定义身份验证令牌 我使用第三方 JWT 库 https github com jwtk jjwt https github com jwtk jjwt 在此库中 有一个选项可以添加 firebase 自定义令牌
  • Delphi 应用程序被 Google Chrome 视为“危险”

    我经常用Delphi 2009制作数学软件 并将其发布在我的网站上 然而 去年左右 Google Chrome 开始认为我的一小部分 但数量不断增加 EXE 是 有害的 并且 Google Chrome 拒绝下载它们 例如 今天我编写了一个
  • https登录的安全性?

    我正在编写一个 Apple iOS 应用程序 用于登录帐户并获取一些余额 它使用纯 html 链接进行登录 用户名和密码在运行时动态加载到登录链接 我使用 Wireshark 嗅探了流量 但在发送的任何包中都找不到用户名或密码 我猜 htt
  • VSTS 使用 API 在队列时设置构建参数

    我需要对来自 REST API 的 VSTS 构建进行排队 记录于https learn microsoft com en us rest api vsts build builds queue view vsts rest 4 1 htt
  • 上下文切换到安全模式(arm trustzone)的成本是多少

    我试图了解在arm中可信 安全 和非安全模式之间来回切换的成本 从非安全世界转移到安全世界时到底需要发生什么 我知道需要设置 ns 位 基于某些特殊指令 需要刷新和更新页表 刷新和更新处理器缓存 还有什么需要发生的吗 处理器缓存 它们是分段
  • SecurityContextHolder.getContext().getAuthentication() 返回 null

    我想使用以下代码手动绕过 spring Security 的用户 User localeUser new User UsernamePasswordAuthenticationToken auth new UsernamePasswordA
  • exec()、shell_exec()、curl_exec() 的安全漏洞

    有时 我会使用 exec shell exec 和curl exec 以下是典型用途 假设其中有 PHP 变量 即第一个变量中的 html 用户有可能修改其内容 从安全漏洞的角度来看 我应该关注什么 escapeshellcmd 和 esc
  • 使用 POST 请求向 Jira API 发送 JSON 时出现 System.Net.WebException

    好吧 伙计们 我已经为这个问题苦苦挣扎了一天左右 但没有明确的解决方案 我将从例外开始 The remote server returned an error NotFound at System Net Browser AsyncHelp
  • 当SESSION_COOKIE_SECURE = True时如何在HTTP中获取一些用户身份信息

    以下是我正在开发的网站的简短描述 公共页面可以通过 HTTP 或 HTTPS 访问 其他一些页面 认证页面 账户详情页面等 需要通过HTTPS访问 Apache2 负责进行相关的 HTTP 到 HTTPS 链接重定向 我使用标准 Djang
  • 适用于移动应用程序的 REST API 上的 OAuth

    我正在开发移动应用程序的后端 使用 ASP NET MVC 4 Web Api 构建 RESTful API 该应用程序将在 iOS 和 Android 上运行 我的用户将只能使用他们的 Facebook 帐户登录 并且只有登录后 他们才能
  • 在 React 应用程序中使用 API 密钥

    我有一个使用两个第三方服务的 React 应用程序 该应用程序已开始使用react create app 这两项服务都需要 API 密钥 通过脚本标签提供一个密钥 如下所示 另一个 API 密钥在请求中使用 我将实际密钥存储在常量中并使用它
  • 使用 TFS REST API 获取迭代中的所有工作项

    我正在尝试获取有关当前冲刺中所有用户故事的一些信息 我可以轻松获取当前冲刺的路径 并且给定工作项的 ID 列表 我可以从其中获取所需的内容 但我不确定如何从迭代路径获取这些 ID 我见过使用 C 和查询的示例 但我使用的是 javascri
  • JWT(Json Web 令牌)与自定义令牌

    我仔细查看了问题 但没有找到任何可以解决我的疑问的内容 我找到了有关 JWT 的大量信息 但在比较 JWT 相对于针对 REST 服务生成自定义令牌来对身份验证请求提供的优势时 发现的信息并不多 与生成自定义生成令牌相比 使用 JWT Js
  • WCF、REST、SSL、客户端、自定义证书验证

    我有一个无法解决的具体问题 让我详细解释一下 我是这项技术的新手 所以我可能使用了一些错误的术语 如有不明白之处 请指正并解释或要求解释 我正在创建一个自托管的 WCF REST 服务器 托管在 WPF 应用程序中 它使用 https SL
  • 开发者环境-如何调用/消费其他微服务

    背景 我的环境 Java Play2 MySql 我在 Play2 gt S1 S2 S3 上编写了 3 个无状态 Restful 微服务 S1 消耗来自 S2 和 S3 的数据 因此 当用户点击 S1 时 该服务会异步调用 S2 S3 合
  • 使用 Swagger 的 Spring REST API 文档 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以帮助我生成 RESTful API 文档的工具 我的服务器是用Java编写的并使用S

随机推荐

  • DatePicker 自定义格式的日期输入

    我想使用 redux form 将日期存储在我的状态中 我使用反应日期选择器 为了使日期选择器与我的 redux form 兼容 我写道 import React PropTypes from react import DatePicker
  • 如何将 url 参数从我的应用程序传递到 Chrome 扩展程序?

    在我的 Google App Engine 应用程序中 我想传递此用户信息 user users get current user 当用户单击应用程序中的按钮时 将其传递给 url 参数中的 Chrome 扩展程序 我怎样才能做到这一点 我
  • 为什么 Java 对重写的静态方法强制返回类型兼容性?

    Per 这个答案 https stackoverflow com questions 2223386 why doesnt java allow overriding of static methods and 这个答案 https sta
  • 使用 .readlines() 时摆脱 \n [重复]

    这个问题在这里已经有答案了 我有一个 txt 文件 其中包含值 这些值的列出如下 Value1 Value2 Value3 Value4 我的目标是将值放入列表中 当我这样做时 列表如下所示 Value1 n Value2 n The n不
  • pandas 中带有数据点的线图

    Using pandas我可以轻松地绘制线图 import pandas as pd import numpy as np matplotlib inline to use it in jupyter notebooks df pd Dat
  • 解析错误代码 209 和 -34018

    我花了几个小时学习 Parse 上的用户管理 认为考虑到它已经成为一项长期的服务 这会很容易 关于 自动用户 和会话的文档很少 我正在尝试构建一个允许用户匿名存在的应用程序 使用 PFUser enableAutomaticUser 然后他
  • javac生成的class文件总是一样的吗?

    目前 我们正在为一个大型项目 大约 2000 个源文件 重新编写所有构建系统的脚本 并且有人讨论对文件进行二进制比较以确保一切正确 这导致了以下问题 的输出是javac保证在各个编译中都是相同的还是可能会发生变化 另一个问题 https s
  • 警告消息行号 R

    我有一个大的 for 循环 循环了数百次 最后它产生了这个警告 Warning messages 1 In min j na rm TRUE no non missing arguments to min returning Inf 有什么
  • 随机选择一组不同整数的最有效方法

    我正在寻找最有效的算法来随机选择一组 n 个不同的整数 其中所有整数都在某个范围 0 maxValue 内 限制条件 maxValue 大于 n 并且可能大得多 我不在乎输出列表是否已排序 所有整数必须以相同的概率被选择 我最初的想法是构造
  • Java、JDBC INSERT ON DUPLICATE KEY UPDATE 通配符

    我有一个下一个 SQL 查询 const val INSERT OR UPDATE ITEM SQL INSERT INTO items owner id object id item id count enchant level item
  • 如何在JavaFX中的VBox中移动项目(通过拖动更改顺序)?

    我想在 VBox 中拖动 TitledPane VBox 中有 n 个 Titlepane 我想在拖动时更改它们的顺序 我尝试了一些 MouseEvents 和 DragEvents 但它不适合我 但我需要 Titledpane 移动到哪个
  • Matplotlib.pyplot:如何为现有绘图设置第二个 y 轴

    我有两组线性相关的值 因此 我只需要一个带有第二个 y 轴且比例正确的图表 最优雅的方法是什么 只制作两个条形图就会产生重叠 import numpy as np import matplotlib pyplot as plt x np a
  • 正则表达式匹配 CSS 中任何“未使用”的规则(类、id 等)

    我有一个巨大的 CSS 文件 我想将其缩减为仅使用的 CSS 规则 我通过使用做到了这一点CSS 使用插件 https addons mozilla org en US firefox addon css usage 对于萤火虫 它为每个未
  • Android NDK OpenGL 应用程序的浮点还是定点?

    我正在尝试决定是否对我的应用程序 大部分是 C 中的所有 3D 相关元素主要使用浮点数还是整数 据我所知 大多数基于 ARM 的设备没有硬件浮点支持 因此我认为任何使用浮点的繁重工作都会明显变慢 然而 我计划在大部分情况下准备所有数据 即在
  • TeamCity LocalService PFX 程序集签名 - 在何处安装证书

    我一直在研究这个问题 虽然我找到了一些 解决方案 但似乎很多 解决方案 都是偶然发现的 或者无法充分解释真正有效的方法 我已经尝试了多种解决方案 但仍然遇到问题 我在 Visual Studio 中创建了一个 PFX TeamCity 和
  • Facebook 延迟深度链接在 iOS 上是否有效?如何在应用商店发布应用程序之前对其进行测试?

    我在 iOS 上遇到 Facebook 延迟深度链接问题 深层链接有效 但延迟深层链接不起作用 我已经阅读了很多关于这个问题的内容 但仍然找不到解决方案 我已经设置了深层链接并且有效 当我也尝试测试深度链接时应用广告助手 https dev
  • 在 Sequelize Model.create 上设置 raw = true

    我希望能够在调用后接收普通的原始对象Model create在 Sequelize 上 创建的对象本身 没有元数据或任何其他东西 就像 raw true 选项中Model find 我已经看过这个答案 将所有查询设置为 raw true S
  • 在 NetworkX 中同时创建属性和边(如果存在相同的属性)

    在 NetworkX 中创建节点后 如果两个节点 至少 具有一个重叠的相同属性 我想在节点之间添加边 这似乎是一个问题 并非所有节点都包含相同数量的属性 可能是这种情况 如果是 我应该如何解决 import networkx as nx f
  • Java 获取默认 UI 颜色

    例如 我如何找到 JList 中的默认选择颜色 这些颜色存储在哪里 对于 Swing 组件 您可以在应用程序范围内获取和设置默认颜色UIDefaults http download oracle com javase 6 docs api
  • 刷新令牌如何比长期存在的 JWT 更安全?

    在将 JWT 与自然不安全的客户端 浏览器 手机等 一起使用时 我很难理解刷新令牌的使用 对我来说 如果 JWT 被泄露 那么刷新令牌也不会被泄露 这种想法似乎很天真 只要刷新令牌保持有效 攻击者本质上就拥有无限的 JWT 来源 即使您使使