2017-08-01 79 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? –