c# - 撤销 OAuthBearerAuthentication 的访问 token

标签 c# asp.net asp.net-web-api oauth

我已经为 Web API 设置了身份验证,这与此处的博客几乎相同 oauth-refresh-tokens来自 Taiseer Joudeh。

在我遇到问题之前,它工作得很好:

  • 我们有用户 A 和用户 B 当前登录到系统。
  • 用户 A 作为管理员,从系统中删除用户 B。
  • 用户 B 仍然有权访问网络直到 token 过期

我做了一些研究,他们都说撤销访问 token 非常困难(或者在 OAuth 中不可能)。我唯一能做的就是将超时设置得更短。它仍然在我脑海中出现故障,我不喜欢访问 token 在之后的时间范围内(尽管是有限的)仍然有效的想法。

那么,有没有更好的方法或任何建议,我们将不胜感激。

最佳答案

按设计使用 refresh_tokenaccess_token 并将访问 token 的生命周期缩短到您可以接受的持续时间,并尽可能短去。由于您既是资源服务器又是授权服务器,渐近线意味着无论如何您最终都会在每次通话中检查用户,正如其他答案中所建议的那样,但是:

使用数据库存储访问 token 很可能会导致缓存 token 以优化性能,在这种情况下,您最终会遇到与刷新 token 相同的情况,其中缓存过时超时相当于访问 token 的生命周期。

最后你不能既吃蛋糕又吃它,所以我建议按照 OAuth 的设计目的去做。

关于c# - 撤销 OAuthBearerAuthentication 的访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27836338/

相关文章:

c# - 在 Base Controller 中实现依赖注入(inject)的最佳方式是什么

asp.net-core - 如何解决 Blazor 上的 "TypeError: Failed to fetch"错误?

android - 调用成功时响应体为空(android)

c# - 确定几何形状层次结构所需的算法

javascript - ASP.Net Webforms : Can a RequiredFieldValidator be listened to?(事件)

c# - 将 sqlite 数据库从文件复制到 :memory using C#

c# - 强制回发 Asp.Net

c# - Orderby Ascending on a list 错误asp.net

c# - 您只能使用第二类创建类对象(第一类没有构造函数?)

c# - 这个 .NET 7 最小 API 总是返回 200