IdentityServer中的Cookie中间件和令牌生存期

时间:2017-02-24 11:18:51

标签: asp.net-core asp.net-core-mvc identityserver4

我们有一个IdentityServer4,一个MVC应用程序作为客户端,一个API作为受保护资源。 Client(IdentityServer中的类)具有以下属性:AccessTokenLifetimeIdentityTokenLifetimeAuthorizationCodeLifetime。 如果我们将这些属性设置为不同的值(想象1小时,2小时和3小时)。这些属性如何与cookie到期时间相关?

cookie中间件(在MVC客户端上)看起来像这样,并且到期时间为8小时。 IdentityServer上的cookie中间件的到期时间跨度为10小时。

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

当令牌到期前令牌到期时会发生什么,反之亦然,应如何处理?

1 个答案:

答案 0 :(得分:3)

在ASP.NET Core中,三个令牌生存期不会影响任何客户端应用程序cookie的生存期。

例外情况是,如果您使用UseOpenIdConnectAuthentication中间件并将UseTokenLifetime设置为true,则在此情况下,Cookie生存期将设置为身份令牌的生命周期。值得庆幸的是,默认情况下,ASP.NET Core中不再像在ASP.NET 4.x中那样将其设置为true(毕竟,身份标记通常在OpenID Connect中很短暂。)

如果用户仍在您的应用程序中进行身份验证,则令牌过期,您需要续订它们。这可以使用刷新令牌或某种静默刷新策略来完成,例如oidc-client中的那个。