我们正在通过MSGraph rest api在我们的应用程序上集成 Office 365 功能,我们目前在刷新令牌的验证方面遇到麻烦,这是来自无效请求的服务器的响应错误代码:
“error”:“invalid_grant”,“error_description”:“AADSTS70002:错误 验证凭据。 AADSTS70008:刷新令牌已过期 由于不活跃。令牌被发出 2016-04-27T11:44:49.4826901Z于14.00:00:00无效。
这很烦人,因为我们需要用户再次登录Microsoft服务器来获取他们的凭据。
是否有任何选项可以避免由于不活动而导致刷新令牌失效?或者延长这个到期时间?
答案 0 :(得分:2)
刷新令牌的生命周期有限。如果在此之前未请求新令牌(和刷新令牌),则它们将过期。一旦发生这种情况,用户必须重新进行身份验证。
如果您需要永久访问该帐户,则需要定期手动刷新令牌。您可能需要查看this article。它涵盖了v2端点如何工作的基础知识(以及各种令牌生存期)。
在我的大多数实现中,我使用队列来处理刷新令牌。我将每个令牌排队,以便在10天时刷新。如果失败,我会重新提交队列。如果在第12天仍然失败,我会通过电子邮件通知用户有问题,他们需要重新进行身份验证。
<强>更新强>
刷新令牌生命周期最近更改为until-revoked
。您可以阅读有关更改here
答案 1 :(得分:0)
这是一般OAuth(不是AAD特定的):获取访问令牌需要两个步骤。第一步是获取需要用户进行身份验证的身份验证代码。第二步是从授权代码中兑换访问令牌和刷新令牌。第二步纯粹是程序化的,即用户不需要存在。该应用可以继续重复第二步,即从最新刷新令牌中兑换新的访问令牌和新刷新令牌,而用户甚至不知道它。
您的应用应安排频繁刷新&#39;刷新令牌。您可以在应用程序运行时随时执行此操作。
如果用户长时间不使用该应用,例如大约2周(我相信),则刷新令牌自然会过期。如果您想避免这种情况,您必须安排专门的工作来刷新令牌。
兹拉特科