4

asp.net メンバーシップ プロバイダーを実装する 2 つの Web アプリケーションがあります。これは少し変更されたメンバーシップ プロバイダー (つまり、カスタム メンバーシップ プロバイダーです) ですが、それはこの投稿には関係ないと思います。

アプリケーションは同じドメインで実行され、Cookie を使用してアプリケーション間で相互認証を行いたい (アプリケーションは app1.mydomain.com / app2.mydomain.com で実行される)

同じプロバイダーを実装する 2 つのアプリケーションを使用しています。

  • ウェブフォーム 3.5
  • MVC4.5

どちらのアプリケーションでも、webconfig で同じセクションを構成しています: authentication、forms、machineKey、membership、roleManager。どちらもカス​​タム メンバーシップとロール プロバイダーを使用しますが、これは両方のアプリで同じです。それらはすべて同じドメイン内に存在します。各アプリケーションでの認証はうまく機能します。

問題:

  • 4.5 アプリでログインした後、3.5 アプリに移動してもログインできない場合
  • 3.5 アプリにログインすると、4.5 アプリにはログインされません
  • 4.0 アプリにログインすると、以前にログインしていた場合でも 3.5 アプリからログアウトされ、他の方法でも同じです。

私が行ったテスト:

  • デフォルトの MVC 4.0/4.5 サイトとデフォルトの Web フォーム 4.0/4.5 サイトをセットアップしましたが、クロス ドメイン Cookie は完璧に機能します。
  • しかし、既定の MVC 4.0/4.5 サイトと既定の Web フォーム 3.5 サイトをセットアップすると、SSO は機能しません。

フレームワークの非互換性のようです。または、Cookie の作成または暗号化に関してフレームワーク間で何かが変更されているようです。ブラウザは、あるサイトで作成された Cookie を別のサイトに送信していないようです。一方、4.0/4.5 の MVC および WebForms ではうまく機能します。

これらは、各アプリケーションの web.config セクションです。

MVC4:

<authentication mode="Forms">
  <forms name="isep" loginUrl="~/Account/LogIn" timeout="20" protection="All" />
</authentication>

<machineKey compatibilityMode="Framework20SP2" validationKey="85A2E75F1FFEEAC971928062F844F0AFAE876B422503FCF7F80C1B84683C323049ACCC02A47D54E2E98B0422D2E3EFF1B16B7E85E8359EF6ABC52974D0EB9AA7" decryptionKey="FCD4A55D93A720914FA40EEC9599BD81BECE1490EB232DB8DD649BBB0D565194" validation="SHA1" decryption="Auto" />

Web フォーム 3.5:

<authentication mode="Forms">
  <forms name="isep" loginUrl="login2.aspx" timeout="20" protection="All" />
</authentication>

<machineKey validationKey="85A2E75F1FFEEAC971928062F844F0AFAE876B422503FCF7F80C1B84683C323049ACCC02A47D54E2E98B0422D2E3EFF1B16B7E85E8359EF6ABC52974D0EB9AA7" decryptionKey="FCD4A55D93A720914FA40EEC9599BD81BECE1490EB232DB8DD649BBB0D565194" validation="SHA1" decryption="Auto" />

<authorization>
  <deny users="?"/>
</authorization>

これについての手がかりはありますか?

ありがとう!..

PnP

4

2 に答える 2

4

次の回答で詳しく説明されているように、web.config で要素CompatabilityModeの を設定してみてください。MachineKey

ASP.NET 4.5/MVC 4 フォーム認証へのアップグレードが失敗する


更新後

要素のdomain属性を次のように設定します。authentication\forms

<authentication mode="Forms">
  <forms domain=".somedomain.com" name="isep" loginUrl="~/Account/LogIn" timeout="20" protection="All" />
</authentication>

somedomainプライマリ ドメインはどこにありますか。

于 2012-12-31T17:10:28.773 に答える
-1

追加のコメント:

これらの web.config パラメーターは、現在の問題と競合する可能性があります。

<add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" /> 
<add key="aspnet:UseLegacyEncryption" value="true" /> 
<add key="aspnet:UseLegacyMachineKeyEncryption" value="true" />

それとも...彼らは問題を解決するのを助けることができますか?

ありがとう!..

PnP

于 2012-12-31T18:03:15.857 に答える