DataProtectionProvider в примере с образцом Identity

В официальном проекте примера Identity 2 приведен код ниже UserManager.Create()

public static UserManager Create(IdentityFactoryOptions<UserManager> options, IOwinContext context) {

  //...etc...

  // --- what does this block do? ---
  var dataProtectionProvider = options.DataProtectionProvider;
  if (dataProtectionProvider != null) {
    manager.UserTokenProvider = new DataProtectorTokenProvider<User>(dataProtectionProvider.Create("ASP.NET Identity"));
  }
  // --------------------------------

  //...etc...

}

Документация по идентификации альфа/бета/RTM плохой или не существует.

Что это делает?

Ответ 1

Поставщик защиты в следующей строке используется как поставщик/генератор токенов.

manager.UserTokenProvider = new DataProtectorTokenProvider<User>(dataProtectionProvider.Create("ASP.NET Identity"));

Он отвечает за создание токена подтверждения электронной почты или токена пароля reset. Если вы не установите эту строку, вы не сможете использовать эти функции (будет выбрано соответствующее исключение). Пример можно найти здесь.

Его основная цель - обеспечить реализацию интерфейса IDataProtector (через метод Create), который шифрует и дешифрует данные. Реализация для этого интерфейса в структуре - это DpapiDataProtectionProvider, который должен использоваться, когда приложение не размещено ASP.NET. В Интернете существует несколько других реализаций (например, тот, который использует служебный ключ для целей безопасности). class Для получения дополнительной информации о DataProtectorTokenProvider см. документацию документация по защите данных.