刷新令牌已过期ActiveDirectory版本2.24并升级到版本3.10

时间:2016-05-26 06:34:33

标签: azure-active-directory adal

我们最近开始研究一种解决方案,我们希望在服务器到服务器调用中访问用户资源,并使用Azure AD的OAuth 2.0方法对使用Microsoft工作帐户的用户进行身份验证。 我们使用Microsoft.IdentityModel.Clients.ActiveDirectory版本2.24实现了OAuth 2.0身份验证,并在市场上发布。大约2天后,我们开始为某些用户收到以下错误 “由于14天不活动,刷新令牌已过期” 经过调查,我们发现了以下内容:

  • 默认情况下,Azure AD刷新令牌有效期约为14天。
  • 访问令牌最多只能刷新90天(假设我们“刷新”刷新令牌)
  • 首次发布访问权限并刷新令牌后90天,最终用户将不得不重新签名
  • 目前,Azure AD中无法配置这些设置 为了解决这个问题,我们试图转移到最近发布的Microsoft.IdentityModel.Clients.ActiveDirectory版本3.10。从库版本2.24升级到3.10时,我无法使用在使用版本2.x序列化后保留的RefreshToken,在使用版本3.x进行反序列化时发生错误(我注意到类TokenCache已经过一些更改)

所以,我有以下问题:

  • 因为,有问题的刷新令牌在14天期间被用来定期获取访问令牌,我们想对“刷新令牌的”不活动“的定义是什么?”如果它只包含访问权限令牌,为什么刷新令牌在第一个位置到期?请注意,我用来获取访问令牌的调用是AuthenticationContext.AcquireTokenByRefreshToken。这可能是问题吗? (链接到ADAL 3 didn’t return refresh tokens for ~5 months…
  • 如何将持久化的序列化2.x令牌缓存与库版本3.x?
  • 一起使用
  • 鉴于我们转移到版本3.x并使用调用AuthenticationContext.AcquireTokenSilentAsync来定期获取访问令牌,我将不会再遇到上述问题90天。你能否确认一下我采取的方法。
  • 我们是否可以获取超过90天的刷新令牌,以避免要求用户每季度重新进行身份验证?
  • 如果用户更改密码,刷新令牌是否会失效?

1 个答案:

答案 0 :(得分:0)

现在回答这个问题已经很晚了,现在你可能已经找到了解决方案。如果是,请发布您的答案。 当我们昨天转移到AD 3.10时我遇到同样的问题而且我错过了对下线的调用并且它有效

 var authenticationResult = await authContext.AcquireTokenByAuthorizationCodeAsync(httpCookie.Value, uri, credential);

你必须在调用authContext之前给这个打电话.AcquireTokenSilentAsync(...)请在你的最后试试。