首页 文章

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

提问于
浏览
3

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

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

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

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

1 回答

  • 3

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

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

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

相关问题