【问题标题】:Azure refresh token expires despite using a confidential client尽管使用了机密客户端,Azure 刷新令牌仍会过期
【发布时间】:2019-01-30 09:08:39
【问题描述】:

我正在将 Web 应用程序/API azure 应用程序用于 Web 应用程序,并使用带有 client_id 和 client_secret 的授权授予流来获取访问/刷新令牌(使用 rest API),一切正常,除了刷新令牌有90 天后过期。 如 azure 文档中所述,期望拥有一个永不过期(除非明确撤销)的 refresh_token。

这是 Microsoft AzureAD 文档所说的: (https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-configurable-token-lifetimes#refresh-tokens)

带有机密客户端刷新令牌的令牌生命周期 机密 客户端是可以安全存储客户端密码的应用程序 (秘密)。他们可以证明请求来自受保护的 客户端应用程序,而不是来自恶意行为者。例如,一个网络 应用程序是机密客户端,因为它可以将客户端机密存储在 网络服务器。它没有暴露。因为这些流量更多 安全,颁发给这些流的刷新令牌的默认生命周期 直到撤销,不能使用策略更改,也不会被 因自愿密码重置而被撤销。

这是基于 RFC6749 的机密客户端定义: (https://www.rfc-editor.org/rfc/rfc6749#section-2.1)

能够为其保密的客户 凭据(例如,在安全服务器上实现的客户端 限制访问客户端凭据),或能够安全 使用其他方式进行客户端身份验证。

我现在在刷新令牌请求时遇到的错误: AADSTS700082: The refresh token has expired due to inactivity. The token was issued on 2018-10-19T17:26:59.8511467Z and was inactive for 90.00:00:00.

【问题讨论】:

    标签: azure oauth-2.0 azure-active-directory refresh-token


    【解决方案1】:

    您不会用新的刷新令牌替换旧的刷新令牌,每当您调用以使用刷新令牌获取新的访问令牌时也会提供该令牌。

    Refreshing the access tokens 页面对此进行了如下解释。

    刷新令牌没有指定的生命周期。通常情况下, 刷新令牌的生命周期相对较长。然而,在一些 情况下,刷新令牌过期、被撤销或缺乏足够的 所需操作的权限。您的应用程序需要期待 并正确处理令牌颁发端点返回的错误。

    当您收到带有刷新令牌错误的响应时,丢弃 当前刷新令牌并请求新的授权码或访问 令牌。特别是在授权中使用刷新令牌时 代码授予流程,如果您收到带有 interaction_required 或 invalid_grant 错误代码,丢弃刷新 令牌并请求新的授权码。

    【讨论】:

      猜你喜欢
      • 2019-01-07
      • 1970-01-01
      • 2020-06-22
      • 2022-11-29
      • 1970-01-01
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      相关资源
      最近更新 更多