我们有一个IdentityServer4,一个MVC应用程序作为客户端,一个API作为受保护资源。
Client
(IdentityServer中的类)具有以下属性:AccessTokenLifetime
,IdentityTokenLifetime
,AuthorizationCodeLifetime
。
如果我们将这些属性设置为不同的值(想象1小时,2小时和3小时)。这些属性如何与cookie到期时间相关?
cookie中间件(在MVC客户端上)看起来像这样,并且到期时间为8小时。 IdentityServer上的cookie中间件的到期时间跨度为10小时。
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationScheme = "Cookies",
AutomaticAuthenticate = true,
ExpireTimeSpan = TimeSpan.FromHours(8)
});
当令牌到期前令牌到期时会发生什么,反之亦然,应如何处理?
答案 0 :(得分:3)
在ASP.NET Core中,三个令牌生存期不会影响任何客户端应用程序cookie的生存期。
例外情况是,如果您使用UseOpenIdConnectAuthentication
中间件并将UseTokenLifetime
设置为true,则在此情况下,Cookie生存期将设置为身份令牌的生命周期。值得庆幸的是,默认情况下,ASP.NET Core中不再像在ASP.NET 4.x中那样将其设置为true(毕竟,身份标记通常在OpenID Connect中很短暂。)
如果用户仍在您的应用程序中进行身份验证,则令牌过期,您需要续订它们。这可以使用刷新令牌或某种静默刷新策略来完成,例如oidc-client中的那个。