Глядя на ASP.NET Identity (новая реализация членства в ASP.NET), я столкнулся с этим интерфейсом при реализации своего собственного UserStore
:
//Microsoft.AspNet.Identity.Core.dll
namespace Microsoft.AspNet.Identity
{
public interface IUserSecurityStampStore<TUser> :
{
// Methods
Task<string> GetSecurityStampAsync(TUser user);
Task SetSecurityStampAsync(TUser user, string stamp);
}
}
IUserSecurityStampStore
реализован по умолчанию, EntityFramework.UserStore<TUser>
который по существу получает и устанавливает TUser.SecurityStamp
свойство.
После еще нескольких копаний выясняется, что a SecurityStamp
- это Guid
новое, сгенерированное в ключевых точках UserManager
(например, смена паролей).
Я не могу многое расшифровать за пределами этого, так как я исследую этот код в Reflector . Почти вся символьная и асинхронная информация была оптимизирована.
Кроме того, Google не сильно помог.
Вопросы:
- Что такое
SecurityStamp
удостоверение ASP.NET и для чего оно используется? - Играет ли
SecurityStamp
роль какую-либо роль при создании файлов cookie для аутентификации? - Есть ли какие-либо последствия для безопасности или меры предосторожности, которые необходимо принять с этим? Например, не отправлять это значение в нисходящий поток клиентам?
Обновление (16.09.2014)
Исходный код доступен здесь:
asp.net
asp.net-mvc
asp.net-mvc-5
asp.net-identity
Брайан Чавес
источник
источник
Ответы:
Это предназначено для представления текущего снимка учетных данных вашего пользователя. Так что если ничего не изменится, штамп останется прежним. Но если пароль пользователя будет изменен или логин будет удален (отмените связь с учетной записью Google / FB), штамп изменится. Это необходимо для таких вещей, как автоматическая подпись пользователей / отклонение старых файлов cookie, когда это происходит, что является функцией 2.0.
Идентификационные данные еще не открыты, в настоящее время они находятся в процессе разработки.
Изменить: Обновлено для 2.0.0. Таким образом, основная цель состоит в том
SecurityStamp
, чтобы разрешить выход везде. Основная идея заключается в том, что всякий раз, когда что-то, связанное с безопасностью, изменяется у пользователя, например, пароль, рекомендуется автоматически аннулировать любой существующий вход в файлы cookie, поэтому, если ваш пароль / учетная запись ранее была взломана, злоумышленник больше не имеет доступа.В 2.0.0 мы добавили следующую конфигурацию, чтобы подключить
OnValidateIdentity
метод в,CookieMiddleware
чтобы посмотретьSecurityStamp
и отклонить куки, когда они изменились. Он также автоматически обновляет заявки пользователя из базы данных каждый раз,refreshInterval
если штамп остается неизменным (который заботится о таких вещах, как смена ролей и т. Д.)Если ваше приложение хочет явно запустить это поведение, оно может вызвать:
источник
UseCookieAuthentication
не рекомендуется . Мне удалось настроить его с помощьюservices.Configure<SecurityStampValidatorOptions>(o => o.ValidationInterval = TimeSpan.FromSeconds(10));
.UseCookieAuthentication уже устарела . Мне удалось настроить его с помощью
Перемещено из ответа в ответ на запрос .
источник
Я заметил, что SecurityStamp требуется для проверки токена.
Чтобы сделать репо: Установите для SecurityStamp значение null в области данных. Сгенерируйте токен (работает нормально). Проверьте токен (не работает)
источник