【问题标题】:How to Revoke JWT Authentication via Cookie?如何通过 Cookie 撤销 JWT 身份验证?
【发布时间】:2019-06-05 00:57:01
【问题描述】:

我正在尝试使用 Micronaut 测试 JWT 身份验证。

我从this guide 阅读,本指南正在运行,但我仍然完全不明白。

例如,当用户A使用用户名sherlock登录并登录成功时,用户A的客户端将获得JWT Token并存储在Cookie 而另一端用户 B 使用相同的用户名并登录服务器,他/她将获得新的 JWT 令牌并存储到Cookie

表示用户A和B可以访问http:localhost:8080/,但是当用户A或B做Logout时,用户A和B都不能再次访问http://localhost:8080/

这意味着,当其中一个注销时,两个 JWT Token 都不再有效。

来自this guide, micronaut 如何撤销该 JWT 令牌?

【问题讨论】:

    标签: jwt micronaut


    【解决方案1】:

    我推荐阅读这篇文章:

    https://medium.com/devgorilla/how-to-log-out-when-using-jwt-a8c7823e8a6

    但简短的回答是,您实际上无法像在表单登录或基本身份验证方法中那样“注销”。例如,您可以强制删除 cookie 以删除 JWT。但更好的解决方案是为您的 JWT 提供过期时间,以获得满足此类情况的未授权状态。

    假设我们的 JWT 已过期 5 分钟,用户 A 和 B 都已登录。然后用户 A“注销”并且应用程序删除了 cookie,但用户 B 浏览器中的现有 JWT 仍然存在,而您没有强制删除的选项。但是客户端 B 的 JWT 将在 5 分钟后过期,他将不得不再次登录(因为他将在每次即将到来的 HTTP 调用时收到 401)

    我希望这对你有某种解释:)

    【讨论】:

    • But the better solution is to provide expiration times for your JWT to get an Unauthorized state that meet such cases 这意味着我必须将 JWT 加入黑名单?为什么he would have to log in again (Because he will get an 401 for every upcoming HTTP call)?用户 A 和 B 有不同的 JWT?
    • 如果您需要管理过期的 JWT,那么您根本不需要 JWT。
    猜你喜欢
    • 2023-03-12
    • 2015-09-13
    • 2018-09-02
    • 2023-03-15
    • 2018-03-03
    • 2016-07-21
    • 1970-01-01
    • 2016-06-25
    • 2021-03-25
    相关资源
    最近更新 更多