web-dev-qa-db-ja.com

ASP.Net Identity手動パスワードハッシュ

MVC 5Entity Framework Database Firstアプローチを使用してWebアプリケーションを開発しています既存のデータベース

私の承認と認証にもASP.Net Identityを使用していますが、組み込みのEntity Frameworkコード、つまりを使用していませんUserManagerApplicationUserなどの代わりに、Brock Allenによるこのようなアプローチを使用しています。

http://brockallen.com/2013/10/24/a-primer-on-owin-cookie-authentication-middleware-for-the-asp-net-developer/

現在、アカウントのログインと登録に取り組んでおり、カスタムユーザーテーブルに保存する前にユーザーパスワード(---)をハッシュしたい

IPasswordHasherを実装する独自のカスタムクラスを作成できることに気づきましたが、ここで行き詰まります。以下は、私がそれがどのように機能すべきかを模擬的に示していますが、これが正しいかどうかは完全にはわかりません。

public class CustomPassword : IPasswordHasher
{
    public string HashPassword(string password)
    {
        return password;
    }

    public PasswordVerificationResult VerifyHashedPassword(string hashedPassword, string providedPassword)
    {
        if (hashedPassword.Equals(providedPassword))
            return PasswordVerificationResult.Success;
        else return PasswordVerificationResult.Failed;
    }
}

これらは私の質問です:

Q1:新しいユーザーアカウントを登録し、このように自分のアカウントコントローラーからHashPasswordメソッドにユーザーパスワードを渡すと、ユーザーパスワードがハッシュされ、文字列として返されますただし、これを行うためにHashPassword関数にどのコードを入力すればよいかわかりません。

CustomPassword pwd = new CustomPassword();
String UserPassword = "test@123";
String HashedNewPassword = pwd.HashPassword(UserPassword);

Q2:ユーザーがWebサイトにログインするときに、提供されたパスワードを取得し、データベースユーザーテーブルからハッシュされたパスワードを取得して、VerifyHashedPasswordメソッドですが、繰り返しますが、ハッシュされた文字列とハッシュされていない文字列を比較するためのコードがわかりません。

これを行う方法についてのアドバイスをいただければ幸いです。

ありがとう。

18
tcode

UserManagerインスタンスを作成した後、passwordhasherプロパティをCustomPasswordHasherに割り当てます。

UserManager<ApplicationUser> UserManager = new UserManager<ApplicationUser>(store);
UserManager.PasswordHasher = new CustomPasswordHasher(); // IPasswordHasher

UserManagerを使用して、ユーザー名とパスワードを持つユーザーを検索します。

23
jd4u