【问题标题】:How to revoke JWT Bearer Token in .net core API如何在 .net core API 中撤销 JWT Bearer Token
【发布时间】:2018-02-20 01:06:58
【问题描述】:

我已经实现了 JWT Bearer 令牌基础认证和授权。我正在使用以下代码销毁 JWT 令牌或注销当前用户,但它不起作用。

//var claim = _httpContextAccessor.HttpContext.User.Claims;
            // var users = await _userManager.FindByNameAsync(_httpContextAccessor.HttpContext.User.Identity.Name);
            //  var identity = _httpContextAccessor.HttpContext.User.Identity as ClaimsIdentity;
            // foreach (var item in claim)
            // {
            //     identity.RemoveClaim(item);
            // }

            await _signInManager.SignOutAsync();

【问题讨论】:

  • 欢迎来到 Stack Overflow,@SumitRawat。您的代码以什么方式不起作用?你得到什么结果?你期待什么结果?
  • 我可能在这里错了,所以如果其他人知道得更好,请发表评论。我认为应该在客户端撤销 JWT Bearer 令牌?
  • 是的@DavidLee 我想从服务器撤销 JWT 不记名令牌。在上面的代码中,我只是想删除用户的声明
  • 有没有办法验证令牌或将到期日期更改为过去?

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


【解决方案1】:

在用户注销期间无法取消/撤销 JWT 令牌,这并不简单,但有一种解决方法。您可以尝试以下步骤:

  • 为令牌设置合理的过期时间
  • 注销时从客户端删除存储的令牌
  • 拥有不再活跃但仍有时间生存的令牌数据库
  • 在每个授权请求上查询针对黑名单提供的令牌

我还在下面粘贴了 2 个链接,我认为这些链接对我很有帮助:

【讨论】:

    猜你喜欢
    • 2018-11-20
    • 2015-09-27
    • 1970-01-01
    • 2019-10-18
    • 2021-08-02
    • 2016-06-16
    • 2021-04-15
    • 2021-04-28
    • 1970-01-01
    相关资源
    最近更新 更多