2017-08-01 72 views
0

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

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

回答

0

的MSAL文库(其正被用于交换的样品中的标记的代码)自动调用天青AD B2C端点交换refresh_token新的access_token。你不需要处理它。

0

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

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

  1. 简单的选项是将应用程序会话生存期与令牌生存期分开。您可以通过将UseTokenLifetime = false传递给中间件中的OpenIdConnectAuthenticationOptions来完成此操作。
  2. 您可以将会话生存期与Azure AD会话生存期关联起来。这将涉及添加逻辑来通过从隐藏的iframe向Azure AD发出登录请求来更新您的应用会话。

您可以阅读更多关于这些方法和blog post的权衡。

0

IIRC有从库中它的自我提供给汽车没有选择续约但也有可以采取以实现...简单的一种是从JavaScript

  1. 将超时功能的多个选项JS并在令牌到期之前做出触发。你可以从令牌到期时间获得。
  2. 从JS触发MVC action/REST API方法,并从B2C获取新的accestoken并用新的更新accestoken。
+0

看起来很有希望。您是否有.NET代码示例来更新访问令牌并更新Cookie? –