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