Ответ 1
Предназначен для представления текущего моментального снимка ваших учетных данных пользователя. Поэтому, если ничего не изменится, штамп останется прежним. Но если пароль пользователя изменен или удаляется логин (отмените связь с учетной записью google/fb), штамп изменится. Это необходимо для таких вещей, как автоматическое подписание пользователей/отказ от старых файлов cookie, когда это происходит, что является функцией, которая приходит в 2.0.
Идентификация еще не является открытым исходным кодом, но она все еще находится в конвейере.
Изменить: Обновлено для 2.0.0. Таким образом, основная цель SecurityStamp
- включить выключение везде. Основная идея заключается в том, что всякий раз, когда что-то связанное с безопасностью изменяется у пользователя, например пароль, рекомендуется автоматически аннулировать любой существующий знак в файлах cookie, поэтому, если ваш пароль/аккаунт был ранее взломан, у злоумышленника больше нет доступа.
В 2.0.0 мы добавили следующую конфигурацию, чтобы подключить метод OnValidateIdentity
в CookieMiddleware
, чтобы посмотреть на SecurityStamp
и отклонить файлы cookie, когда они были изменены. Он также автоматически обновляет заявки пользователя из базы данных каждый refreshInterval
, если штамп не изменяется (что касается таких вещей, как изменение ролей и т.д.)
app.UseCookieAuthentication(new CookieAuthenticationOptions {
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider {
// Enables the application to validate the security stamp when the user logs in.
// This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
Если ваше приложение хочет явно вызвать это поведение, оно может вызвать:
UserManager.UpdateSecurityStampAsync(userId);