2017-06-20 5 views
1

新しく作成されたMVCアプリケーションで従来のWebForms 4.61アプリケーションのSSOを設定中です。このオリジナルのSO Postに引用されている参考文献を使用してください。machineKeyを設定するとすぐにフォーム認証が機能しなくなる

<authentication mode="Forms"> 
    <forms loginUrl="~/account/login" timeout="120" defaultUrl="~/" /> 
</authentication> 
<roleManager enabled="true" defaultProvider="DefaultRoleProvider"> 
    <providers> 
    <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" /> 
    </providers> 
</roleManager> 
<membership defaultProvider="DefaultMembershipProvider"> 
    <providers> 
    <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" /> 
    </providers> 
</membership> 
<httpRuntime targetFramework="4.6.1" maxRequestLength="20480" requestValidationMode="2.0" executionTimeout="300" /> 

私がログインすることができますし、期待通りのすべてがある:次のように

Webフォームアプリでweb.configファイルを検索します。

<machineKey decryptionKey="AutoGenerate,IsolateApps" validation="SHA1" validationKey="AutoGenerate,IsolateApps" /> 

しかし、すぐに私はのmachineKeyエントリを追加すると:

<machineKey decryptionKey="AutoGenerate" validation="SHA1" validationKey="AutoGenerate" /> 

はの(何も指定されていない)のデフォルトの動作が何であるかを交換する:今、しかし私は、次のmachineKeyの設定を追加したいですweb.configを実行してアプリケーションを再実行してください。もうログインできなくなりました。標準のasp:ログイン制御を使用して認証を行っています。

machineKeyを追加するとすぐに認証が機能しなくなるのはなぜですか?

PS。 decryptKeyとvalidationKeyを指定すると動作に違いはありません。ログインできません。

+0

「IsolateApps」を削除する特別な理由はありますか? – mjwills

+0

"IsolateApps修飾子は、ASP.NETが各アプリケーションのアプリケーションIDを使用してアプリケーションごとに固有の暗号化されたキーを生成するように指定します"。アプリケーション間でこれを使用したいので、私はこの指定子を使い続けることができません。 – TheEdge

+0

ログインしようとするとどうなりますか? https://stackoverflow.com/questions/21731831/changing-machinekey-prevents-login-of-existing-users/21733831#21733831は役に立ちますか? – mjwills

答えて

1

完全性のために、@mjwillsが彼の参照したSOの投稿と連携させる道に私を入れた後、私の答えを投稿しています。最終的に私はこのSOの投稿を見つけました。

http://geekswithblogs.net/DavidHoerster/archive/2010/06/15/asp.net-membership-password-hash----.net-3.5-to-.net-4.aspxへのリンクがあり、既定のハッシュアルゴリズムが.NET 4の変更点としてSHA256に変更されたことが記載されています。書かれた古い記事に従っていたので、SHA1について説明しました。

は、.NET 4のアプリケーションを持っているのであれば、あなたはあなたのマシンのキーを追加するときに実行する必要があるすべては、次のように指定します:

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

AESおよびHMACSHA256は、復号化に使用する暗号のデフォルト設定であり、それぞれ検証します。

+0

あなたがそれを解決したことを見て驚くばかりです。 – mjwills

関連する問題