Spring Security OAuth2何时检查访问令牌到期?

时间:2020-05-04 21:58:39

标签: spring spring-boot spring-security oauth-2.0 spring-security-oauth2

我正在生产环境中调试一个场景,在该场景中间歇性地看到来自资源服务器的意外HTTP 401响应。我正在使用Spring Security OAuth2(“旧的” OAuth库; Spring Security 5.2.x之前的版本以及OAuth2的实现)来处理请求和执行Authn。

我正在观察以下内容:

  1. 用户在时间x + 900(此处为秒)登录并获得访问令牌。该访问令牌在时间x + 480(有效期为15分钟)时到期。
  2. 在时间x + 900,用户向受保护的端点发出请求。
  3. 请求需要很长时间才能完成,因此令牌到期时仍在处理中。在时间HTTP 401,服务器返回一个{{1}}响应。

问题:

  1. Spring Security OAuth2真的是这样工作吗?更具体地说,如果令牌过期时仍在处理请求,它是否跟踪令牌的到期时间并返回401?还是在安全过滤器的另一端,何时准备响应?
  2. 是否可以禁用此行为,以便仅在首次处理请求时才检查令牌?

1 个答案:

答案 0 :(得分:0)

我看了spring-security-oauth2的源代码,但这不是它的工作方式。在处理请求开始时,仅检查令牌过期一次。

我将上面遇到的问题追溯到一个问题,即我们的服务器资源在一段时间内已用尽。当资源(CPU; HTTP请求工作线程)可用时,服务器开始处理请求,但此时令牌已过期。