3

SqlMembershipProvider を使用し、指定されたマシン キーを持つ既存のアプリを運用しています。

<machineKey validationKey="..." decryptionKey="..." 
            validation="SHA1" decryption="AES"/>

現在、.Net 2.0 AppPool で実行されます。

バックアップしている既存のデータベースを使用する必要がある新しいアプリケーションを作成しています。SqlMembershipProvider を動作させようとしていますが (動作しています)、既知のユーザー名/パスワードを動作させることができません。このアカウントは prod で機能し、パスワード ハッシュとソルトは両方のデータベース (prod と mine) で同じです。ただし、SqlMembershipProvider がデータベースからのパスワードを入力されたハッシュ化されたパスワードと比較する時点では、それらは同じではありません。

この記事では、.Net 4.0 の ASP.Net の既定のハッシュ アルゴリズムを使用した重大な変更を提案しています: http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes

ただし、提案されているように、既にマシン キーを指定しています。さらに、.Net 4.0 コンポーネントを取り除いて 3.5 (CLR 2) に戻しましたが、入力されたパスワードのハッシュは同じままです。

さらに、この新しい一時アプリを本番環境と同じサーバーに再デプロイしようとしましたが、まだログインに失敗します (ただし、パスワード ハッシュの不一致が原因で失敗するかどうかは確認できません)。

ここで他に何を試すことができますか?

4

2 に答える 2

2

.net 4 でデフォルトが変更されたため、web.config でメンバーシップ プロバイダーの hashAlgorithmType を指定する必要があります。

必要な値は、おそらく SHA1 です。

詳細については、次のページを参照してください: http://geekswithblogs.net/DavidHoerster/archive/2010/06/15/asp.net-membership-password-hash----.net-3.5-to-.net- 4.aspx

于 2011-02-01T19:33:30.773 に答える
0

最初に運用アプリを dev/test にコピーし、そこで実行して、期待どおりに動作するかどうかを確認します。その場合は、プロジェクトを .NET 4.0 で実行するようにアップグレードしますが、他のコードを変更しないでください (つまり、SQLMembershipProvider で動作させようとしないでください) - アプリケーションを再テストします。環境の問題であり、.NET の重大な変更の問題ではなく、コード内の何かが期待どおりに機能しないことを示します。新しいアプリケーションで使用しているハッシュ アルゴリズムは、古いアプリケーションで使用されているものとは異なると思います。古いアプリケーションでパスワードをソルトしていましたか? 新しいアプリケーションで同じソルトを使用していますか?

于 2011-02-01T19:29:39.117 に答える