【问题标题】:How to increase the expiry date of access token + Spring boot + OAuth?如何增加访问令牌+ Spring boot + OAuth的到期日期?
【发布时间】:2018-09-28 05:03:47
【问题描述】:
我们在 spring-boot V1.5.7 上开发了一个 restful API,它由 OAuth 保护,具有“密码”授权类型。我们仅使用访问令牌,未使用刷新令牌。访问令牌的有效期设置为 15 分钟。最初,我们点击令牌端点并获取令牌并使用服务。尽管服务被频繁使用,但访问令牌在 15 分钟后过期。我们应该做的是,当服务在 15 分钟内没有被调用时,令牌应该过期。
谁能帮我解决这个问题?
【问题讨论】:
标签:
spring
spring-boot
oauth
access-token
【解决方案1】:
看起来,首先我们需要知道
我们为什么使用访问令牌?
访问令牌用于访问受保护的资源。它有一个有效期,例如 1 分钟、10 分钟等。在此之后,令牌变得无效。要获得一个新的有效令牌,您应该使用刷新令牌。尽管您可以使用您的用户名和密码获得一个全新的令牌。即使您在到期时间内调用任何 api,令牌在到期时间后仍无效。如果在过期时间内没有调用任何 api,token 也会失效。这是预期的行为。
为什么会这样?
假设您从服务器获取访问令牌并使用访问令牌从服务器访问受保护的资源。中间的人不知何故通过嗅探数据包获得了令牌。然后,入侵者可以轻松访问资源,并尽可能多地访问他想要的时间。所以从技术上讲,我们可以说,您的帐户被黑了。
为了防止这种攻击,您应该定义一个适合您的用例的令牌有效期。所以这比以前更安全。
我强烈建议您的系统允许刷新令牌。
但是,您也可以将系统配置为重复使用令牌。这个link 可能会有所帮助。
【解决方案2】:
您可以使用 OauthRestTemplate(如果您不想编写自己的逻辑),它将在过期后获取新的访问令牌(使用刷新令牌)。如果您计划在应用程序中使用 OAuth,则没有理由不使用刷新令牌。