Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
撤销/拒绝ASP.NET核心中间件中针对锁定用户的有效Json Web令牌_Asp.net_Jwt_Asp.net Core Webapi - Fatal编程技术网

撤销/拒绝ASP.NET核心中间件中针对锁定用户的有效Json Web令牌

撤销/拒绝ASP.NET核心中间件中针对锁定用户的有效Json Web令牌,asp.net,jwt,asp.net-core-webapi,Asp.net,Jwt,Asp.net Core Webapi,我正在使用JWT中间件+ASP.NET标识在我的ASP.NET核心WebAPI项目中建立一个简单的用户/密码登录 代币的有效期为15分钟。我想我会利用刷新令牌的概念让用户保持登录状态,当他仍在浏览网站(SPA)或使用移动应用程序时(关于记住我选项呢?我会创建一个有效期可能为一个月的令牌?) 那么,有没有办法撤销生成的令牌?我正在考虑(在每次请求时)检查用户是否仍然有权访问API。也许还有其他方法来处理这些情况? 我看到一个AspNetUserTokens表。也许有一种方法可以自动将JWT存储在那

我正在使用JWT中间件+ASP.NET标识在我的ASP.NET核心WebAPI项目中建立一个简单的用户/密码登录

代币的有效期为15分钟。我想我会利用刷新令牌的概念让用户保持登录状态,当他仍在浏览网站(SPA)或使用移动应用程序时(关于
记住我
选项呢?我会创建一个有效期可能为一个月的令牌?)

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


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

您可以参考本文:

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

简单的方法是发行短期访问令牌,如果您想撤销用户,请撤销刷新令牌,如本文所示,清除客户端的刷新令牌和访问令牌。当然,访问令牌在到期之前仍处于活动状态

另一种方法是使用Identity Server 4引用令牌:

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