如何增加访问令牌+ Spring 引导+ OAuth 的到期日期?

How to increase the expiry date of access token + Spring boot + OAuth?

我们有一个 restful API 在 spring-boot V1.5.7 上开发,它由具有 "password" 授权类型的 OAuth 保护。我们仅使用访问令牌,未使用刷新令牌。访问令牌的有效期设置为 15 分钟。最初,我们点击令牌端点并获取令牌并使用服务。尽管服务使用非常频繁,但访问令牌会在 15 分钟后过期。我们应该做的是,当服务没有被调用 15 分钟时,令牌应该过期。

谁能帮我解决这个问题?

看起来,首先我们需要知道
为什么我们使用access token?
访问令牌用于访问受保护的资源。它有一个有效期,例如 1 分钟、10 分钟等。在那之后,令牌将失效。要获得一个新的有效令牌,您应该使用 refresh token.Though 您可以使用您的用户名和密码获得一个全新的令牌。即使您在到期时间内调用任何 api,令牌也会在到期时间后失效。如果您在到期时间内没有调用任何 api,令牌也将失效。这是预期的行为。

为什么会这样?
假设您从服务器获取访问令牌并使用访问令牌从服务器访问受保护的资源。中间人以某种方式通过嗅探数据包获得令牌。然后入侵者可以轻松访问资源,尽可能多地访问他想要的时间。所以从技术上讲,我们可以说,您的帐户被黑了。
为防止这种攻击,您应该定义适合您的用例的令牌有效期。所以这比以前更安全。
我强烈建议为您的系统允许刷新令牌。

不过,您也可以将系统配置为重复使用令牌。这 link 可能会有所帮助。

您可以使用 OauthRestTemplate(如果您不想编写自己的逻辑),它将在过期后获取新的访问令牌(使用刷新令牌)。如果您计划在您的应用程序中使用 OAuth,则没有理由不使用刷新令牌。