У меня есть приложение ASP.NET MVC на .NET 4.8 с Identity и Owin 2.2.4. Он имеет 2FA, включенную с помощью ApplicationCookie, и работает отлично.
Проверьте эту реализацию Startup.ConfigureAuth для получения дополнительной информации:
Код: Выделить всё
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
ExpireTimeSpan = TimeSpan.FromMinutes(30),
SlidingExpiration = true,
CookieSecure = CookieSecureOption.Always,
CookiePath = "/",
CookieSameSite = SameSiteMode.Strict,
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity(
validateInterval: TimeSpan.FromMinutes(10),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
Код: Выделить всё
private async Task SignInUser(ApplicationUser user, string authType)
{
await UserManager.UpdateSecurityStampAsync(user.Id);
var identity = await UserManager.CreateIdentityAsync(user, authType);
var authProperties = new AuthenticationProperties { IsPersistent = false };
AuthenticationManager.SignIn(authProperties, identity);
}
Пользователь может войти в систему, скопировав файл cookie .AspNet.ApplicationCookie. и вставьте его в отдельный браузер, это приведет к сбою VAPT и перехвату сеанса.
Я знаю, что если у кого-то есть этот файл cookie, он сможет войти в систему. но в этом случае в частности, я хочу, чтобы пользователь повторно вошел в систему, даже если у него есть файлы cookie и пытаюсь запустить в другом браузере.
Подходы, которые я рассматривал до сих пор:
- Использовал недолговечный validateInterval (например, TimeSpan.FromSeconds(10)) для OnValidateIdentity в CookieAuthenticationProvider, это работало очень хорошо, но после моего исследования я обнаружил, что это увеличит нагрузку на сервер и повлияет на производительность, как это уже произошло запрашивать базу данных или хранилище пользователя каждые десять секунд.
- Сохранение информации об устройстве или IP-адресе во время входа в систему и ее проверка на соответствие данным текущего сеанса.
Мой вопрос : как я могу гарантировать, что пользователь не сможет войти в систему в разных браузерах, даже если они копируют файлы cookie приложения, и в этом В таком случае, как мне предложить им повторно войти в систему?
Будем очень признательны за любые предложения или идеи. Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/793 ... h-identity
Мобильная версия