IdentityServer4: установите дату истечения срока действия на файл cookie «idsrv.session»

#identityserver4 #asp.net-core-identity #asp.net-core-authenticationhandler

#identityserver4 #asp.net-core-identity #asp.net-core-authenticationhandler

Вопрос:

У меня возникают проблемы с механизмом автоматического обновления моего приложения angular, потому что срок действия cookie неверно устанавливается сервером идентификации.

После успешного входа в систему для домена сервера идентификации будут установлены следующие файлы cookie: 2020-08-20 12_53_39-ORF Zuul - Microsoft Visual Studio

Как вы можете видеть на рисунке, для файла cookie «idsrv.session» установлен срок действия «session». В моем старом IdentityServer3 этот файл cookie имеет правильную дату истечения срока действия, и все работает нормально.

Кто-нибудь может мне помочь решить эту проблему. Мне нужен способ установить дату истечения срока действия для файла cookie «idsrv.session».

Вот текущая конфигурация / инструкции, которые я добавил для достижения своей цели:

 // Startup.cs - ConfigureServices()
services
   .AddIdentityServer(options =>
   {
      options.EmitStaticAudienceClaim = true;
      options.AccessTokenJwtType = "JWT";
      options.Authentication.CookieLifetime = TimeSpan.FromDays(30);
   })
services
   .AddAuthentication("Cookies")
   .AddCookie("Cookies", options =>
   {
      options.ExpireTimeSpan = TimeSpan.FromDays(30);
   })
  
 // AccountController.cs - Login()
await HttpContext.SignInAsync(isuser, new AuthenticationProperties
   {
       IsPersistent = true,
       ExpiresUtc = DateTimeOffset.UtcNow.Add(TimeSpan.FromDays(30))
    });
  

Но эти настройки не влияют на файл cookie «idsrv.session».

Я использую .net core 3.1 и IdentityServer4 4.0.4.

Спасибо!!

РЕШЕНИЕ:

В моем случае мне помогает следующее утверждение, что пользователь не выйдет из системы через 30 минут. Для файла cookie «idsrv.session» по-прежнему установлено значение «session», но он не будет удален через 30 минут.

 services.Configure<SecurityStampValidatorOptions>(o => o.ValidationInterval = TimeSpan.FromDays(30));
  

Комментарии:

1. Есть ли конкретное место (до / после) в файле Startup.cs, куда я должен это добавить? Я пытался добавить это, но, похоже, я проверяю через 30 секунд, и файл cookie idsrv.session не найден или не поддерживается.