Web Api oauth 访问令牌无效到期日期

Webapi oauth accestoken invalid expiration date

我们正在构建一个广泛使用 webapi 后端的前端应用程序。 在此应用程序中,我们使用 oauth 来登录用户并将属于该用户的所有声明存储在关闭访问令牌中。 在前端,我们使用哨兵错误日志记录 (http://www.getsentry.com) 来记录我们所有的 javascript 错误。这包括任何以某种方式出错或未 return 我们期望的结果的 webapi 调用。对于我们收到的每个错误,我们还会记录 cookie 信息,其中包括该特定用户当时使用的访问令牌。

现在我们看到很多 webapi 调用出错了,因为它们发出的调用是被禁止的。我检查了他们的一些访问令牌,我立即注意到这些信息已经过时了,应该早就刷新了,因为访问令牌应该已经过期了。

通过使用:

 var ticket = Startup.OAuthOptions.AccessTokenFormat.Unprotect("tokenhere");

在调试器内的本地主机上,我可以取消保护访问令牌并查看其中的信息。

就像我说的,其中一些令牌中的信息包含无效信息,应该已经刷新了.. 然后我注意到它们还没有刷新的原因是因为 ExpiresUtc 比 IssuedUtc 大 2 年多。换一种说法;令牌在 2 年后才会过期。

这是其中一个令牌的一些示例信息

IssuedUtc: { 20/02/2016 03:04:40 +00:00}
ExpiresUtc: {16/11/2018 03:04:40 +00:00}

我们正在使用 oauth 的默认过期时间(20 分钟),并且在管道中以某种方式将其设置为大于 2 年。用户现在可以刷新他们的声明的唯一方法是他注销并再次登录,显然在他们这样做之前,它会在前端产生很多错误。 通过调试我自己的令牌,我可以验证它是否将其设置为 20 分钟并且我自己从未设法重现它。

已解决,我们在某个地方隐藏了一个控制器方法,该方法正在发布有效期为 2 年的访问令牌。Doh