【问题标题】:Revoke/Reject valid Json Web Token in ASP.NET core middleware for locked out users撤销/拒绝 ASP.NET 核心中间件中的有效 Json Web 令牌以锁定用户
【发布时间】:2019-04-16 02:37:08
【问题描述】:

我正在使用 JWT 中间件 + ASP.NET 身份在我的 ASP.NET Core WebAPI 项目中建立一个简单的用户/密码登录。

令牌有效期为 15 分钟。我想我将利用刷新令牌概念让用户保持登录状态,当他仍在浏览网站 (SPA) 或使用移动应用程序时(remember me 选项呢?我将创建一个对一个月吧?)

那么,有没有办法撤销生成的令牌?我正在考虑检查(在每个请求上)用户是否仍然有权访问 API。也许还有其他方法可以处理这些情况?

我看到了一个 AspNetUserTokens 表。也许有一种方法可以自动将 JWT 存储在那里?!目前,我使用 ASP.NET Identity 仅用于用户身份验证。

【问题讨论】:

    标签: asp.net jwt asp.net-core-webapi


    【解决方案1】:

    你可以参考这篇文章:http://bitoftech.net/2014/07/16/enable-oauth-refresh-tokens-angularjs-app-using-asp-net-web-api-2-owin/

    一旦用户获得长期访问令牌,只要他的访问令牌未过期,他就可以访问服务器资源,除非授权服务器实施强制您执行的自定义逻辑,否则没有标准方法可以撤销访问令牌将生成的访问令牌存储在数据库中,并对每个请求进行数据库检查。但是使用刷新令牌,系统管理员可以通过简单地从数据库中删除刷新令牌标识符来撤销访问权限,因此一旦系统使用已删除的刷新令牌请求新的访问令牌,授权服务器将拒绝此请求,因为刷新令牌不再可用(我们将详细介绍这一点)。

    简单的方法是颁发短期访问令牌,如果你想撤销用户,如文章所示撤销刷新令牌,在客户端清除刷新令牌和访问令牌。当然,访问令牌在过期之前仍然有效。

    另一种方法是使用 Identity Server 4 Reference Tokens :

    http://docs.identityserver.io/en/release/topics/reference_tokens.html

    IdentityServer 将令牌的内容存储在数据存储中,并且只会将此令牌的唯一标识符发回给客户端。然后,接收此引用的 API 必须打开与 IdentityServer 的反向通道通信以验证令牌

    【讨论】:

      猜你喜欢
      • 2020-11-13
      • 2023-03-19
      • 2017-06-15
      • 2020-06-02
      • 2017-10-03
      • 2018-09-21
      • 2018-08-02
      • 2015-05-06
      • 1970-01-01
      相关资源
      最近更新 更多