【问题标题】:Why can't JWT refresh tokens be revoked?为什么不能撤销 JWT 刷新令牌?
【发布时间】:2018-02-18 20:39:03
【问题描述】:

我目前正在尝试围绕 JSON Web Tokens 进行思考,并确保我不会在自己(和我的用户)的脚下开枪。因此,我遇到了Stop using JWT for sessions 的帖子,更具体地说,是the rebuttals to counterpoints

其中一个反对点是,可以通过设置较短的过期时间和使用刷新令牌来允许用户获取新令牌而无需再次登录来解决无法使令牌失效的问题。对此的反驳是“你不能撤销长期令牌,这意味着你回到了原点。”

为什么不能撤销长期代币?是否不需要将它们传递给身份验证服务器,该服务器可以检查无效令牌列表(或者只是从其数据库中删除刷新令牌)然后提供新的 JWT? p>

【问题讨论】:

    标签: security session jwt


    【解决方案1】:

    可以完全撤销刷新令牌。身份验证服务器向每个客户端发出一个长期刷新令牌,并且必须跟踪它以验证刷新请求。

    刷新令牌不必是自包含的 JWT,因此必须存储在服务器上。服务器将刷新令牌与客户端帐户相关联并简单地将其删除,以便下一个刷新请求需要新的最终用户身份验证。

    这是一个示例身份验证响应,其中包含 OpenIdConnect(一个 Oauth2 扩展)的刷新令牌

    HTTP/1.1 200 OK
    Content-Type: application/json
    Cache-Control: no-store
    Pragma: no-cache
    
    {
     "access_token": "SlAV32hkKG",
     "token_type": "Bearer",
     "refresh_token": "8xLOxBtZp8",
     "expires_in": 3600,
     "id_token": "eyJhbGciOiJSUzI1NiIg..."
    }
    

    【讨论】:

    • 好吧,既然没有人反驳你,我想这意味着反驳文章不准确......谢谢!
    猜你喜欢
    • 2015-12-13
    • 2019-04-12
    • 2021-09-24
    • 2017-11-09
    • 2015-11-02
    • 2021-12-02
    • 2018-11-14
    相关资源
    最近更新 更多