18

私はMVC3サイトで作業していますが、ASP.NETメンバーシップに困惑しています。私はSQL Azureデータベースに接続されたSystem.Web.Providers 1.0.1を使用しています。ASP.NETメンバーシップ - ローカルで動作し、Azureで失敗する

今のところ、Azureのもとで実行しているときに、Compute Emulatorで実行されているときにログインするのと同じユーザー名とパスワードが失敗します。メンバーデータベースのFailed Password Attemptsカウンタが更新されているので、正しいデータベースを使用していることがわかります。

+0

具体的な問題点はわかりませんが、導入にIntellitraceを有効にすることをお勧めします。 Intellitraceを有効にして、クラウドプロジェクトを展開し、ログインを1回試行してIntellitraceログをダウンロードします。 Intellitraceがどれほど強力で有用なのかを知ることができます。例外を見ることで問題を解決することができます。 – astaykov

+1

提案していただきありがとうございますが、IntellitraceはVS Ultimateでのみサポートされており、現在のMSDNサブスクリプションの上に余分な$ 12,000を用意していますか私の問題を解決しない。 –

+0

あなたは「コンピューティングエミュレータの下で」と言っています.Webサイト(IISなど)ではなく、Webロールやワーカーロールを使用していることを意味します。マシンキーを変更すると、コンピューティングエミュレータの動作が変更されますか? –

答えて

28

this article by David Hoersterの情報のおかげで、私はそれを追跡しました。問題はAzureのデフォルトのパスワードハッシュアルゴリズムが.NET 4.0のデフォルトと異なる点です。これはAzureのSHA1に設定され、HMACSHA256は4.0の新しい標準設定です。

これは、web.configで明示的にハッシュタイプを指定することで修正できます。 HMACSHA256のようなメソッドを使用する場合は、マシンキーも指定する必要があります。そうしないと、自動生成されたマシンキーがサーバーごとに異なるため、同様の問題が発生します。

<のmachineKey><のsystem.web>の下であなたが変更する必要があり、構成要素は次のとおりです。あなたが適切な形式でランダムなキーを生成するためにthis machine key generatorを使用することができます

<machineKey decryptionKey="PUT_DECRYPTION_KEY_HERE" 
      validationKey="PUT_VALIDATION_KEY_HERE" 
      decryption="AES" 
      validation="HMACSHA256" /> 

+1

参考になりました! :) –

+1

あなたは大歓迎です - それはあなたのためではなかった場合、私はJACSHTを知りません:-) –

+1

ハハハ!!!それは陽気です。その頭字語をもっと普及させる必要があります。笑いをありがとう! –

関連する問題