Azure AD B2C OpenID Connect刷新令牌

时间:2017-08-01 13:09:23

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

我在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 :(得分:0)

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

答案 1 :(得分:0)

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

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

  1. 简单的选项是将应用程序会话生存期与令牌生存期分开。您可以通过将UseTokenLifetime = false传递给中间件中的OpenIdConnectAuthenticationOptions来完成此操作。
  2. 您可以将会话生存期与Azure AD会话生存期相关联。这将涉及添加逻辑以通过从隐藏的iframe登录Azure AD请求来续订应用程序的会话。
  3. 您可以在此blog post中详细了解这些方法和权衡。

答案 2 :(得分:0)

IIRC没有选项可以从库中自动更新自动续订但是您可以采用多种方法来实现这一目标...简单的一个来自JavaScript

  1. 在JS中放置一个超时函数,并在令牌过期之前进行该触发。您可以从令牌过期时间获取该内容。
  2. 从JS触发MVC动作/ REST API方法并从B2C获取新的口音并用新的更新口号。