我是不是使用刷新令牌?

Posted

技术标签:

【中文标题】我是不是使用刷新令牌?【英文标题】:Do I use a refresh token?我是否使用刷新令牌? 【发布时间】:2020-07-31 13:04:04 【问题描述】:

我有一个没有用户帐户的应用程序,因此不需要登录。我目前正在通过我的 api 中的 /get-token 端点使用 JWT 进行身份验证,该端点在 UI 启动后立即被调用并返回一个承载令牌,该令牌用于向前调用的调用/

当该令牌过期时,我对如何处理它有点困惑。我在考虑使用刷新令牌,但我看到的所有教程都将刷新令牌传递回 UI,这不是不安全吗?我一直认为刷新令牌是内部的,仅在服务器上用于刷新过期令牌。

处理此问题的最佳方法是什么?

【问题讨论】:

【参考方案1】:

刷新令牌携带获取新访问令牌所需的信息。换句话说,每当需要访问令牌来访问特定资源时,客户端都可以使用刷新令牌来获取由身份验证服务器颁发的新访问令牌。常见用例包括在旧访问令牌过期后获取新访问令牌,或首次访问新资源。刷新令牌也可以过期,但寿命相当长。 刷新令牌通常受到严格的存储要求,以确保它们不会泄露。它们也可以被授权服务器列入黑名单。

【讨论】:

简单来说。如果令牌泄露,那么有人可以使用该令牌访问页面/资源。坐在计算机后面的人有责任不让任何人复制令牌。 我建议您将 JWT 存储在 Web 应用程序的 cookie 中,因为它们提供了额外的安全性,以及使用现代 Web 框架防止 CSRF 的简单性。 html5 Web Storage 易受 XSS 攻击,具有较大的攻击面,并且可以影响所有应用程序用户的成功攻击。 嘿,感谢您提供的信息,所以我将刷新令牌传递回 UI?哪个 UI 将发送到服务器以生成新令牌? 是的,在前端使用了刷新令牌。和你描述的完全一样。当您的令牌/刷新令牌过期时,您会在服务器中生成一个新的刷新令牌。前端应该向服务器发出请求以获取新的刷新令牌。 解决方案是不要让任何人去你的网络标签并拿走它。 :) 也许您可以将其视为整个安全性,但这样做会有点困难。需要社交黑客。如果他们能够点击周围,人们也可以进入您保存的 Chrome 密码。

以上是关于我是不是使用刷新令牌?的主要内容,如果未能解决你的问题,请参考以下文章

JWT 是不是总是需要访问令牌和刷新令牌?

在基于令牌的身份验证中使用刷新令牌是不是安全?

我是不是正确理解用于身份验证的访问和刷新令牌技术?

为啥 API 不使用访问令牌而不是刷新令牌?

ASP.NET 核心中是不是支持刷新令牌?

如何测试我的令牌是不是使用 IdentityServer4 刷新?