web-dev-qa-db-ja.com

IdentityサンプルプロジェクトのDataProtectionProvider

公式のIdentity2サンプルプロジェクトのコードは、以下の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...

}

Alpha/beta/RTM Identityのドキュメントが不良であるか、存在しません。

これは何をしますか?

20
h bob

次の行の保護プロバイダーは、トークンプロバイダー/ジェネレーターとして使用されます。

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

電子メール確認トークンまたはパスワードリセットトークンを生成する責任があります。この行を設定しないと、この機能を使用できなくなります(適切な例外がスローされます)。例を見つけることができます ここ

その主な目的は、データを暗号化および復号化する IDataProtector インターフェイスの実装を(Createメソッドを介して)提供することです。フレームワークでのこのインターフェイスの実装はDpapiDataProtectionProviderであり、アプリケーションがASP.NETでホストされていない場合に使用する必要があります。 Webには他にもいくつかの実装があります(たとえば、セキュリティ目的でマシンキーを使用する実装)。 class DataProtectorTokenProviderの詳細については、 MSDNドキュメント を参照してください。

[〜#〜]更新[〜#〜]

広範な データ保護ドキュメント が利用可能になりました。

19
Horizon_Net