【问题标题】:Azure AD B2C OpenID Connect Refresh tokenAzure AD B2C OpenID Connect 刷新令牌
【发布时间】:2018-01-08 09:05:08
【问题描述】:

我从 Microsoft 站点上的 Azure AD B2C 文档页面中遵循了这个示例 https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-devquickstarts-web-dotnet-susi。让它工作正常,但问题是访问令牌有一个小时的生命周期,在那一小时之后,用户需要重新登录。我不想延长 access_token 的生命周期,但想在 access_token 过期之前刷新令牌。我怎样才能做到这一点?

源代码可以在这里找到:https://github.com/Azure-Samples/active-directory-b2c-dotnet-webapp-and-webapi

【问题讨论】:

    标签: asp.net-mvc openid-connect azure-ad-b2c


    【解决方案1】:

    从您链接的文章中,我了解到您正在尝试将登录添加到您的应用程序。如果登录是您的唯一目标,那么您不需要使用 access_token。在您想使用访问令牌调用 API/服务之前,不需要与获取访问令牌相关的代码。出于登录目的,id_token 就足够了。

    话虽如此,id_token 也有一小时的生命周期。要延长会话,您有几个选择:

    1. 简单的选择是将应用程序会话生命周期与令牌生命周期分开。您可以通过将 UseTokenLifetime = false 传递给中间件中的 OpenIdConnectAuthenticationOptions 来做到这一点。
    2. 您可以将会话生命周期与 Azure AD 会话生命周期相关联。这将涉及通过从隐藏的 iframe 向 Azure AD 发出登录请求来添加逻辑以更新应用的会话。

    您可以在blog post 中阅读有关这些方法和权衡取舍的更多信息。

    【讨论】:

      【解决方案2】:

      MSAL 库(用于交换示例中的令牌的代码)自动调用 Azure AD B2C 终结点以将 refresh_token 交换为新的 access_token。你应该不需要处理它。

      【讨论】:

        【解决方案3】:

        IIRC 没有选项可用于 auto renew 从它自己的库中,但是您可以采用多种选项来实现这一点...简单的一个来自 JavaScript

        1. 在 JS 中放置一个超时函数,并在令牌到期之前触发该函数。您可以从令牌到期时间获得。
        2. 从 JS 触发 MVC 操作/REST API 方法并从 B2C 获取新的 accestoken 并使用新的 accestoken 更新。

        【讨论】:

        • 看起来很有希望。您是否有用于更新访问令牌和更新 cookie 的 .NET 代码示例?
        猜你喜欢
        • 2018-01-21
        • 1970-01-01
        • 2020-03-17
        • 1970-01-01
        • 1970-01-01
        • 2017-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多