【问题标题】:How to revoke all jwt tokens for a specific user?如何撤销特定用户的所有 jwt 令牌?
【发布时间】:2020-06-02 06:01:39
【问题描述】:

我知道访问令牌是独立的,因此无法撤销。 据我了解,这就是为什么访问令牌的到期时间通常很短的原因。这使人们能够撤销刷新令牌,从而只允许用户在访问令牌的到期时间内登录。

但是,如果我理解正确,用户可以在不使用刷新令牌的情况下无限更新他的令牌。

可以通过添加prompt=none 来发起静默身份验证请求。只要您的访问令牌仍然有效,这是可能的。这样做会返回一个新的访问令牌,这与没有prompt=none 参数的直接登录没有区别。

如果我理解正确,曾经获得有效令牌的用户能够不断更新此令牌,而我无法以任何方式“撤销”他的访问权限?

我是否正确理解这一点,如果是,我该如何撤消用户的访问权限,直到他再次手动登录?

【问题讨论】:

    标签: oauth-2.0 jwt identityserver4 revoke-token


    【解决方案1】:

    prompt=none 静默续订实际上使用用户的 IDP 身份验证 cookie,而不是他们的访问令牌。

    好消息是 ASP.Net Core 允许您将保存在所述 cookie 中的数据存储在服务器端(例如,在数据库或分布式缓存中),因此您可以随时撤销所述 cookie。通过删除与该用户帐户相关的 cookie 数据,您可以有效地使他们当前的会话无效,从而可以防止任何未来的静默续订。同样,您可以删除所有持久授权(引用令牌和刷新令牌)。

    查看Microsoft.AspNetCore.Authentication.Cookies.ITicketStore 接口和CookieAuthenticationOptions.SessionStore 属性。

    【讨论】:

      猜你喜欢
      • 2019-09-29
      • 2015-11-02
      • 2021-03-03
      • 2017-06-15
      • 2015-12-13
      • 2016-06-16
      • 2021-11-14
      • 2015-05-06
      相关资源
      最近更新 更多