#identityserver4 #asp.net-core-identity #asp.net-core-authenticationhandler
#identityserver4 #asp.net-core-identity #asp.net-core-authenticationhandler
Вопрос:
У меня возникают проблемы с механизмом автоматического обновления моего приложения angular, потому что срок действия cookie неверно устанавливается сервером идентификации.
После успешного входа в систему для домена сервера идентификации будут установлены следующие файлы cookie:
Как вы можете видеть на рисунке, для файла 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 не найден или не поддерживается.