同じドメインでサブドメインが異なる.NET2.0サイトと.NET4.0サイトの間でSSOを実行しています。単一のマシンの開発環境ではすべて正常に機能しますが、4.0の実稼働サイトで2.0の実稼働サイトによって生成された認証Cookieを受け入れることができません。これらの2つのサイトは別々のサーバー上にあり、1つは2.0フレームワークのみがインストールされたIIS 6を実行し、もう1つは4.0フレームワークがインストールされたIIS7.5を実行しています。<machineKey>
要素と要素の問題を指摘する他の質問に対する他のすべての回答を読みました<authentication><forms>
。信頼してください。これらはすべて適切に設定されており、4つのサイトすべてがこれらの要素に対してまったく同じプロパティ値を持っています。
最初は暗号化の問題だと思っていましたが、Fiddlerで何が起こっているのかを詳しく見てみると、認証Cookieがリクエストで正しく渡されていることがわかりましたが、ある時点で消えてしまったようです。 Request.Cookiesコレクションで利用できます。
4.0の本番サイトはロードバランサーの背後にありますが、現在Webファームにオンラインの他のサーバーはありません。ロードバランサーが何らかの理由でCookieをドロップしている可能性がありますか?有効な認証Cookieではないため、CookieはRequest.Cookiesコレクションに追加されませんか?もしそうなら、なぜそれは有効ではないのですか?
要約すると、要求されたページで以下を実行すると、次のようになります。
HttpCookie AuthCookie = Request.Cookies.Get(".SSOAUTH");
Fiddlerのリクエストヘッダーにその名前のCookieが表示されていても、AuthCookieはnullです。