【问题标题】:How to invalidate or revoke jwt access token using Identity server 4 JWT authentication and Resource Owner Password grant?如何使用身份服务器 4 JWT 身份验证和资源所有者密码授权使 jwt 访问令牌无效或撤销?
【发布时间】:2020-04-28 21:32:10
【问题描述】:

我们已将 JWT 身份验证方案和资源所有者密码授予类型与身份服务器一起使用。后端是基于 .Net 核心的微服务,它为基于 Angular 的前端网站提供访问令牌。

由于 jwt 令牌不可撤销且业务要求具有更长的访问令牌生命周期,因此似乎唯一的选择是在数据库或缓存中跟踪列入黑名单的令牌。

有什么方法可以修改后端的访问令牌,并在用户触发从前端注销时立即过期?

【问题讨论】:

  • 请注意,资源所有者密码凭据 (ROPC) 流程是一种安全威胁。它是 not recommended 并且(可能出于这个原因)不再是 documentation 的一部分。

标签: asp.net-core asp.net-core-webapi identityserver4 asp.net-core-2.2


【解决方案1】:

JWT 无法撤销,它是设计使然,因为它是独立的。可撤销的替代方案是Reference token,它不是独立的,因此服务器需要主动与身份服务器通信。

折衷和常用的方法是将访问令牌生命周期设置为较低值并增加刷新令牌生命周期。刷新令牌是可撤销的 - 身份服务器 4 也支持它。因此,这完全是在与身份服务器的通信频率和较长的访问令牌生命周期之间进行权衡。

【讨论】:

    【解决方案2】:

    JWT 令牌存储在浏览器中,因此您可以删除它的 cookie。 但是这个选项在服务器端没有安全性。

    如果您担心帐户被删除/暂停,那么可以,您必须创建一个黑名单,但您必须针对每个请求对它们进行比较。

    另一个选项是减少过期时间并轮换它们。这里有一个更详细的帖子Invalidating JSON Web Tokens

    【讨论】:

    • 短到期时间是一种解决方案,但要求是长到期时间。如果身份服务器中有某种​​方法可以通过将过期时间设置为当前时间或其他一些机制来修改访问令牌,那就太好了。
    猜你喜欢
    • 2017-12-10
    • 2018-01-20
    • 1970-01-01
    • 2018-07-01
    • 2021-04-10
    • 2017-03-08
    • 2021-01-28
    • 1970-01-01
    • 2020-11-22
    相关资源
    最近更新 更多