我正在试验 Windows Azure Active Directory。在客户端(桌面)应用程序中,用户输入其凭据并进行身份验证以访问 REST 服务。我正在使用最新版本的 Active Directory 身份验证库。在我的场景中,我希望用户插入他的凭据一次,因此我存储刷新令牌并通过调用 AuthenticationContext 对象的 AcquireTokenByRefreshToken 方法使用它来更新访问令牌。我的问题是:刷新令牌会过期吗?我可以在获得刷新令牌数天或数周后使用它吗?
5 回答
我在移动应用上实现了 Azure AD SSO,并使用了 ADAL Nuget 包。我的客户很少有关于刷新令牌到期的查询。在与 Azure 工程团队来来回回并尝试了一些事情之后,这是我的发现。我在这里的博客文章中记录了详细信息:
- Azure AD SSO访问令牌在 1 小时后过期。
- 您可以使用 Azure AD 刷新令牌来刷新您的 AccessToken。
- 刷新令牌在 72到期。
- Azure 允许使用刷新令牌刷新访问令牌,最长期限为 90 天(从颁发令牌的初始日期算起)。这意味着 90 天后,Azure 将对用户进行身份验证以再次登录。(无法确认对此的任何更改)
- 刷新令牌的过期时间默认设置为 72 小时。这现在是可配置的。您可以根据此处的讨论更改此值
完整的细节可以在这篇博文中找到
解决方案在这里。
现在可以通过应用服务的资源管理器来配置 tokenRefreshExtensionHours。
“使用资源浏览器管理站点的身份验证设置,您可以将名为“tokenRefreshExtensionHours”的设置添加到 {site}/config/authSettings.properties 并将其设置为允许使用过期令牌进行刷新的小时数。“
感谢 cgillum。</p>
我使用 Fiddler 捕获了对 Azure Active Directory (AAD) 的调用,并找到了一个 JSON 响应,其中包括 access_token、expires_in 和 expires_on、id_token、refresh_token、resource、scope 和 token_type (Bearer)。
expires_on 等于 1398790050。所以我去了Wolfram Alpha,询问这是 1970 年之后的秒数并增加了 2 小时(我在 UTC+2 时区)。访问令牌有效期为 1 小时。在TechNet 论坛中提到过期令牌的有效期约为 80 天。
现在可以正式配置刷新令牌过期时间: https ://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-configurable-token-lifetimes
是的,刷新令牌确实过期了。我不确定,但我相信您可以在天蓝色的 WAAD 属性设置中设置令牌的 TTL 或过期。我必须检查一下,但目前我无法访问 Azure。