0

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

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

有没有办法修改后端的访问令牌并在用户触发从前端注销时立即过期?

4

2 回答 2

1

JWT 不能被撤销,它是设计使然,因为它是自包含的。可撤销的替代方案是参考令牌,它不是自包含的,因此服务器需要主动与身份服务器通信。

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

于 2020-01-11T14:43:40.470 回答
0

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

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

另一种选择是减少过期时间并轮换它们。这里有一个帖子,其中包含更多详细信息Invalidating JSON Web Tokens

于 2020-01-11T14:29:51.030 回答