如何在微软开发脱机应用程序,而不会让它在90天后过期刷新

时间:2016-03-02 12:17:35

标签: php azure authentication oauth-2.0 outlook-restapi

刚访问了链接&#34; http://www.cloudidentity.com/blog/2015/03/20/azure-ad-token-lifetime/&#34;供参考,并发现从Microsoft OAuth2.0收到的refresh_token只能使用90天的详尽用法,之后我们需要让用户再次验证微软应用< / p>

如果offline_access仅在接下来的90天内工作,我们如何开发refresh_token范围的微软应用?

用户可能不会再次访问webapp,他可能需要微软应用程序才能在后台完成工作并达到目的......

我们是否应该通过某种方法(电子邮件,短信,电话)通知用户重新验证微软应用?这对开发人员来说听起来很乏味,对用户来说也不舒服......

是否有任何压倒一切的机制来解决这一难题?请分享任何想法或解决方法,以便我的灵魂可以安静地休息......

2 个答案:

答案 0 :(得分:0)

目前还没有一种机制可以在移动服务中检索刷新令牌。这是即将为App Service Mobile Apps启用的功能,但截至目前,它尚未通过基本的LoginAsync(“aad”)流程提供。本文将讨论How to Best handle AAD access tokens in native mobile apps并提供帮助。

如果您需要更好的刷新支持,并且如果您使用的是.NET后端,那么您当然可以使用ADAL。它具有LoginAsync的重载,它还接受访问令牌(作为JSON对象的一部分,在“access_token”键下)。这允许客户端处理刷新操作。

答案 1 :(得分:0)

我们可以在Best Practices for OAuth 2.0 in Azure AD

找到报价
  

刷新令牌没有指定的生命周期。通常,刷新令牌的寿命相对较长。但是,在某些情况下,刷新令牌会过期,被撤销或缺少所需操作的足够权限。客户端应用程序需要正确地期望和处理令牌颁发端点返回的错误。收到带有刷新令牌错误的响应时,请丢弃当前刷新令牌并请求新的授权码或访问令牌。特别是,在授权代码授予流程中使用刷新令牌时,如果收到带有interaction_required或invalid_grant错误代码的响应,则丢弃刷新令牌并请求新的授权代码。

这意味着,当refresh_token到期时,如果您使用此令牌申请新的access_token,则会收到错误消息。

因此,您可以在代码脚本中编写错误处理程序,在授权代码授权流程中使用刷新令牌时,如果您收到包含interaction_requiredinvalid_grant错误代码的回复,则需要丢弃刷新令牌并请求新的授权码。