Asp.net Core 2.0 Identity.TwoFactorRememberMe expiry - PullRequest
0 голосов
/ 31 мая 2018

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

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

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

Спасибо

1 Ответ

0 голосов
/ 17 ноября 2018

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

Вариант 1: Поместите следующее в ваш запуск после services.AddAuthentication()Позвоните:

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

Хотя вам также следует подумать о переименовании куки для сокрытия информации - быстрый поиск в Google покажет, что вы используете идентификацию asp.net, посмотрев на имя куки по умолчанию.Это можно изменить одновременно с помощью свойства 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 ().

Для справки, я узнал, как это сделать, просмотрев тесты Identity: 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");
}); 
...