Срок действия идентификатора Asp.net Core 2.0

Я искал, но не могу найти способ изменить дату истечения срока действия файла cookie Identity.TwoFactorRememberMe, который устанавливается, когда вы вызываете метод signInManager.TwoFactorSignInAsync и устанавливаете для параметра «запомнить клиента» значение true.

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

Я использую asp .net core 2.1 - любые ответы, с которыми я сталкивался до сих пор, относятся к более старым версиям удостоверений.

Спасибо

Запись файлов cookie в файл с помощью XSS R
Запись файлов cookie в файл с помощью XSS R
Привет всем :), здесь я продемонстрирую получение cookies, которые будут сохранены в виде txt файла, используя дефект XSS Reflected.
6
0
1 261
1

Ответы 1

Чтобы установить индивидуальное время истечения срока действия двухфакторного файла cookie, существует два разных способа:

Опция 1: Поместите в автозагрузку после вызова services.AddAuthentication() следующее:

services.Configure<CookieAuthenticationOptions>
(IdentityConstants.TwoFactorRememberMeScheme, options =>
{
    //this will override the default 14 day expire time
    options.ExpireTimeSpan = TimeSpan.FromDays(30);
});

Хотя вам также следует подумать о переименовании файла cookie для сокрытия информации - быстрый поиск в Google покажет, что вы используете идентификатор asp.net, посмотрев на имя файла cookie по умолчанию. Это можно изменить одновременно со свойством Cookie.Name:

services.Configure<CookieAuthenticationOptions>
(IdentityConstants.TwoFactorRememberMeScheme, o =>
{
    //this will override the default cookie name for information hiding
    o.Cookie.Name = "app.2fa.rememberme";
    //this will override the default 14 day expire time to 30 days
    o.ExpireTimeSpan = TimeSpan.FromDays(30);
});

Вариант 2: Вы можете изменить имя и время истечения срока, если вы используете вызов AddIdentityCookies () с вызовом AddAuthentication ():

services.AddAuthentication().AddIdentityCookies(o =>
{
  o.TwoFactorRememberMeCookie.Configure(a => a.Cookie.Name = "app.2fa.rememberme");
}); 

Обратите внимание, что вариант 2 будет не работает, если вы также используете Identity Server, поскольку он вызывает это во время вызова UseIdentityServer ().

Для справки, я узнал, как это сделать, просмотрев тесты на идентификацию: https://github.com/aspnet/Identity/blob/c7276ce2f76312ddd7fccad6e399da96b9f6fae1/test/Identity.Test/IdentityOptionsTest.cs#L77. Это нигде не задокументировано, и я изо всех сил пытался наконец это понять. Надеюсь, это поможет следующему человеку, который придет посмотреть, как это сделать.

Что касается темы сокрытия информации, вы также можете рассмотреть возможность переименования файла cookie TwoFactorUserId, который используется во время проверки кода после успешного входа в систему. Это можно сделать так же, за исключением того, что IdentityConstant немного отличается:

services.Configure<CookieAuthenticationOptions>
(IdentityConstants.TwoFactorUserIdScheme, options =>
{
    options.Cookie.Name = "app.2fa.userid";
});

services.AddAuthentication().AddIdentityCookies(o =>
{
  o.TwoFactorUserIdCookie.Configure(a => a.Cookie.Name = "app.2fa.userid");
}); 

Другие вопросы по теме