2 つの Web サイトがあります。1 つの ASP.NET MVC 3 と 1 つの ASP.NET 4 Web フォーム。各 Web サイトには、「アプリケーション プール ID」ユーザーの権限で実行される独自の .NET 4 統合アプリケーション プールがあります。
私たちがやりたいことは、2 つのサイト間で ASP.NET 認証 Cookie を共有することです (読み続けてください!)。2 つのサイトには、同じ暗号化タイプと .NET 2 互換の Cookie などを使用した同じマシン キー (web.config ファイル内) と、両方のサイトへの同じアプリケーション名が与えられています。したがって、ユーザーが 1 つのサイトにログインすると、認証 Cookie が他のサイトと共有されるため、ユーザーは別のサイトにログインするときにサイトにログインする必要がありません。
これは、いくつかの開発マシン、およびステージング サーバーとライブ サーバーで完全に機能します。ただし、クライアントの本番サーバーでは機能しません! サーバーのイベント ログを確認したところ、「フォーム認証に失敗しました: 提供されたチケットが無効です!」というエラー メッセージしか見つかりませんでした。
以下の 2 つのようなブログ投稿やフォーラム ディスカッションを何十回も読みましたが、役に立ちませんでした。
http://weblogs.asp.net/scottgu/archive/2010/09/30/asp-net-security-fix-now-on-windows-update.aspx
また、これらの 2 行を web.config (下<appSettings>
:
<add key="aspnet:UseLegacyEncryption" value="true" />
<add key="aspnet:UseLegacyMachineKeyEncryption" value="true" />
アプリも設定しました。両方のアプリのプール ユーザー。プールを Net_Work サービスに追加し、IIS/Machine キーなどで [自動生成キー] をオフにしましたが、それでも ASP.NET は認証チケットを拒否しています。
誰かがこれで私を助けてくれますか? サーバーの構成は次のとおりです。
IIS: バージョン 7.5 Windows: 2008 RS sp 1 64x