2017-02-24 17 views
2

我們擁有IdentityServer4,作爲客戶端的MVC應用程序和作爲受保護資源的API。 Client(IdentityServer中的類)具有以下屬性:AccessTokenLifetime,IdentityTokenLifetime,AuthorizationCodeLifetime。 如果我們將這些屬性設置爲不同的值(想象1小時,2小時和3小時)。這些屬性如何與Cookie到期時間跨度相關聯?IdentityServer中的Cookie中間件和令牌生存期

Cookie中間件(在MVC客戶端上)看起來像這樣,並且過期時間爲8小時。 IdentityServer上的cookie中間件的過期時間爲10小時。

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    AuthenticationScheme = "Cookies", 
    AutomaticAuthenticate = true, 
    ExpireTimeSpan = TimeSpan.FromHours(8) 
}); 

當cookie過期之前令牌過期,反之亦然,應如何處理?

回答

1

在ASP.NET Core中,三個令牌生存期不影響任何客戶端應用程序cookie的生存期。

這是一個例外,如果您使用的UseOpenIdConnectAuthentication中間件的UseTokenLifetime設置爲true,在這種情況下,cookie的生存期將被設置爲身份令牌的生命週期。值得慶幸的是,ASP.NET Core在默認情況下不再將其設置爲true,因爲它在ASP.NET 4.x中(畢竟,身份令牌通常在OpenID Connect中短暫存在)。

如果令牌在用戶仍在應用程序中進行身份驗證時過期,則需要對它們進行續訂。這可以使用刷新令牌或通過某種靜默刷新策略來完成,例如oidc-client中的一種。

+0

我知道如果令牌過期,客戶端需要從服務器請求一個新的令牌。但是,當客戶端上的cookie過期或者是滑動cookie並且令牌仍然有效時會發生什麼? – user1336

+0

如果客戶端cookie在令牌之前過期,則不會發生任何特殊情況。如果他們不再被認證(沒有cookie),那麼他們可能不會碰到需要授權的端點(使用令牌)。這種情況完全是客戶端應用程序的責任和決定如何處理。 –