Что такое ASP.NET интерфейс Iusersecuritystampstore Identity?



глядя на ASP.NET идентичность (реализация нового членства в 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 (например, смены пароля).



Я не могу расшифровать гораздо дальше этого, так как я изучаю этот код в отражатель. Почти вся символьная и асинхронная информация была оптимизирована.



кроме того, Google не очень помог.



вопросы:




  • что это SecurityStamp in ASP.NET идентичность и для чего она используется?

  • тут SecurityStamp играть какую-либо роль при создании файлов cookie проверки подлинности?

  • есть ли какие-либо последствия для безопасности или меры предосторожности, которые нужно быть с этим? Например, не отправляйте это значение вниз по потоку клиентам?




обновление (9/16/2014)



исходный код доступен здесь:



808   3  

3 ответов:

это предназначено для представления текущего снимка учетных данных вашего пользователя. Так что если ничего не изменится, штамп останется прежним. Но если пароль пользователя изменен или логин удален (разблокируйте свою учетную запись google/fb), штамп изменится. Это необходимо для таких вещей, как автоматическое подписание пользователей/отклонение старых файлов cookie, когда это происходит, что является функцией, которая входит в 2.0.

Identity еще не является открытым исходным кодом, его в настоящее время в конвейере до сих пор.

изменить: обновлено для 2.0.0. так что основная цель SecurityStamp это включить выход везде. Основная идея заключается в том, что всякий раз, когда что-то связанное с безопасностью изменяется на пользователя, например пароль, это хорошая идея, чтобы автоматически аннулировать любые существующие куки входа, так что если ваш пароль/учетная запись была ранее скомпрометирована, злоумышленник больше не имеет доступа.

в 2.0.0 мы добавили следующую конфигурацию крючком OnValidateIdentity метод в CookieMiddleware посмотреть SecurityStamp и отклонить куки, когда он изменился. Он также автоматически обновляет утверждения пользователя из базы данных каждый 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);

Я заметил, что SecurityStamp требуется для проверки токенов.

распотрошить: Установите SecurityStamp в значение null в databsae Сгенерируйте токен (работает нормально) Проверка маркера (сбой)

UseCookieAuthentication is устаревший сейчас. Мне удалось настроить его с помощью

services.Configure<SecurityStampValidatorOptions>(o => 
    o.ValidationInterval = TimeSpan.FromSeconds(10));

переход от ответа к ответу за запрос.

Comments

    Ничего не найдено.