【问题标题】:Revoke access token of OAuthBearerAuthentication撤销 OAuthBearerAuthentication 的访问令牌
【发布时间】:2015-03-06 08:15:32
【问题描述】:

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

在我遇到问题之前它运行良好:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    按照设计使用refresh_token 和access_token,将访问令牌的生命周期缩短到您可以接受的持续时间,并尽可能缩短到您需要的时间。由于您既是资源服务器又是授权服务器,渐近线意味着您最终将在每次调用时检查用户,正如其他答案中所建议的那样,但是:

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

    最后你不能一边吃蛋糕一边吃,所以我建议按照 OAuth 的设计来做。

    【讨论】:

    • 缓存给了我更多的控制权。我可以决定何时删除缓存(与撤销访问令牌基本相同)。但无论如何,这仍然不是一个好方法
    • 考虑我是否正在使用刷新令牌,如果我已将 accesstoken 到期时间设置为 30 分钟,但只有在管理员更改该用户的角色/或从系统中删除该用户时才在 10 分钟内,那么在这种情况下,我可以从刷新令牌表中删除条目,这样用户将无法进一步请求访问令牌,但还剩 20 分钟,用户可以访问受保护的资源。现在,如果是缓存和数据库,我可以立即从缓存中删除该访问令牌,以防万一的用户撤销访问权限。您对此有何看法?
    • @HungLe 为什么你认为缓存访问令牌不是一个好方法。你能告诉我一些关于这个的事情吗,因为我正在考虑为访问令牌实现缓存机制
    • @Learning-Overthinker-困惑你打算使用什么样的缓存?内存缓存是不可靠的。如果您正在考虑持久存储,您最终会遇到性能问题。并且带有缓存 + 数据库存储的事件,由于访问令牌尚未加载到缓存,它也可能会损害第一次运行时的性能。困难的部分是你将如何同步缓存和你的数据库,它可能有点复杂。所以正如 Hans 所说,我建议按照 OAuth 的设计目的来做。
    • @HungLe:如何在 AS 和 RS 服务器之间共享分布式缓存,这样当生成访问令牌时,我会将访问令牌放入缓存中,当用户请求访问受保护资源时,我可以从缓存中验证访问令牌.这个怎么样?
    【解决方案2】:

    感谢您引用和使用我的博客文章,请查看此answer,因为如果您想撤销它们,您需要将访问令牌标识符存储在数据库中。

    【讨论】:

    • 对不起,我找不到您在该线程中提到的任何信息。您的意思是撤销“刷新令牌”吗?
    【解决方案3】:

    如果您每次请求都根据数据库表检查用户,这是可能的。 global.asax 中的以下内容会起作用。

        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {
            if ( /*check table to see if user is allowed in*/)
            {
                HttpContext.Current.User = null;
            }
        }
    

    【讨论】:

    • 我在想这个。如果我必须在每个即将到来的请求上查询数据库,这可能会严重损害性能。此外,它会破坏承载身份验证的目的。
    猜你喜欢
    • 2019-04-12
    • 2020-09-29
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 2018-05-21
    • 2020-11-13
    相关资源
    最近更新 更多