首页 文章

Azure AD B2C OpenID Connect刷新令牌

提问于
浏览
0

我在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

3 回答

  • 0

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

  • 0

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

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

    • 简单的选项是将应用程序会话生存期与令牌生存期分开 . 您可以通过将UseTokenLifetime = false传递给中间件中的OpenIdConnectAuthenticationOptions来完成此操作 .

    • 您可以将会话生存期与Azure AD会话生存期相关联 . 这将涉及通过从隐藏的iframe登录Azure AD请求来添加逻辑以续订应用程序的会话 .

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

  • 0

    IIRC没有选择 auto renew 来自它自己的库但是你可以采用多种选择来实现这个...简单的一个来自JavaScript

    • 在JS中放置一个超时函数,并在令牌过期之前进行该触发 . 您可以从令牌到期时间获取该消息 .

    • 从JS触发MVC动作/ REST API方法并从B2C获取新的accestoken并用新的更新accestoken .

相关问题