OAuth 授权流 - 令牌过期



我正在开发一个使用Outlook Calendar REST API的Android应用程序。我正在尝试保持同步并更新多个用户(会议室(的日历。

我的问题是:

1( 初始授权码多久后过期?

2(而对于刷新令牌

访问令牌将在 60 分钟后过期。我无法了解刷新令牌是否在 6 小时、14 天或 90 天后过期。

3(后者是可配置的吗?我可以让它不过期吗?

'

更新:(从 https://msdn.microsoft.com/en-us/library/azure/dn645542.aspx 开始(

"不提供刷新令牌的生存期,并且根据策略设置和 Azure AD 吊销授权代码授予的时间而有所不同。应用程序应预期并处理对新访问令牌的请求失败的情况。在这种情况下,它应返回到请求新访问令牌的代码。

还有:(从 http://blogs.msdn.com/b/exchangedev/archive/2014/03/25/using-oauth2-to-access-calendar-contact-and-mail-api-in-exchange-online-in-office-365.aspx("刷新令牌没有指定的生存期。通常,刷新令牌的生存期相对较长。但是,在某些情况下,刷新令牌会过期、被吊销或缺少用于所需操作的足够权限。客户端应用程序需要正确预期和处理令牌颁发终结点返回的错误。收到包含刷新令牌错误的响应时,请放弃当前刷新令牌并请求新的授权代码或访问令牌。特别是,在授权代码授予流中使用刷新令牌时,如果收到包含interaction_required或invalid_grant错误代码的响应,请丢弃刷新令牌并请求新的授权代码。

那么,如何保证我的应用程序始终让所有用户登录呢?

它将在夜间处于飞行模式,它也应该自动从崩溃中恢复。是否可以在不对用户进行身份验证的情况下以编程方式存储凭据来解决?

谢谢

答案:

  1. 几分钟。确切的值是实现详细信息,可以随时更改。您应该尽一切努力在获得代码后立即兑换代码。
  2. 见 http://www.cloudidentity.com/blog/2015/03/20/azure-ad-token-lifetime/
  3. 截至今天,生命周期限制无法更改。我们正在开发能够赋予您更多控制权的功能,但我们目前没有 ETA 可以分享

保证用户已登录的唯一方法是成功兑换刷新令牌,或完成身份验证流。缓存凭据的使用仅限于极少数情况,并且在即将推出的服务版本中可能会被禁止。

如果刷新令牌过期,则应计划执行交互式身份验证。请注意,刷新令牌也可能因同意吊销而失效,这将在所有情况下强制要求交互。

您可以做的是获取refresh_token和access_token。通过access_token访问您需要的内容,如果失败,则假设它已过期并使用refresh_token更新access_token。如果用户更改了他们的密码(或者可能有其他情况(,那么你从零开始用户。

为了获得refresh_token我认为您需要将offline_access添加到您的范围内。像这样:

USER_OAUTH2_AUTHORIZE_URL
    + "?client_id=" + config.getClientId()
    + "&redirect_uri=" + getOutlookLoginRedirect(request)
    + "&response_type=code"
    + "&scope=https%3A%2F%2Foutlook.office.com%2Fmail.send%20" +
             "https%3A%2F%2Foutlook.office.com%2Fmail.readwrite%20" + 
             "offline_access%20openid%20email%20profile"

相关内容

  • 没有找到相关文章

最新更新