我已经阅读了大约一天的IdentityServer4问题线程,但仍然对会话/登录cookie的过期时间感到困惑。
如果我像这样从客户端设置cookie过期时间(我正在使用IdentityServer3客户端和IdentityServer4服务器,以便使ASP.NET 4.x Web应用程序进行身份验证):
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "Cookies",
ExpireTimeSpan = new TimeSpan(10, 0, 0),
SlidingExpiration = true
});
我可以打开Chrome开发者工具(F12),查看cookie并且发现它们在浏览器关闭时即过期(IdentityServer的所有cookie的过期日期都被设置为“1969-12-31T23:59:59.000Z”,换句话说,客户端的过期时间没有生效)。
无论我是否将客户端和服务器验证选项的UseTokenLifetime设置为true,情况都是如此:
客户端:
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
...
UseTokenLifetime = true,
...
服务器端:
services.AddAuthentication()
.AddOpenIdConnect("MyLoginScheme", "A login scheme", options =>
...
options.UseTokenLifetime = true;
...
我不确定如何使其采用我设置的客户端 Cookie 生命周期。