2012-12-05 5 views
5

当社の運営者は、当社のウェブポータルにラウンドロビンロードバランサを実装しています。ラウンドロビンロードバランサのためにユーザーがWebサイトからログアウトしています

私はどのサーバーを使用しているのかを確認することができます。私はサーバーAに留まっています。5分間放置して別のページを試すと、サーバーBにプッシュされ、ログに記録されますログアウトページが表示されます。

machine.config内のMachineKeyが両方のサーバーで同じであることを確認しました。セッションが使用されていないことをローカルでテストしました。セッションを完全にローカルにすることができます。まだ動作します。両方のサーバーでドメインのASPXAUTH Cookieを作成していることを確認しましたので、両方のサーバーで認証されたものとして分類する必要がありますが、サーバーを変更するたびに認証が失われます。

ログアウトの原因となる考え方について教えてください。私はそれがASPXAUTHの仕組みについての私の誤解だと推測しています。

答えて

2

セッションはフォーム認証とは別に処理されます。このhereの良い説明があります。

負荷分散環境でのフォーム認証の失敗の最も一般的な理由は、MachineKey要素の同期が不足していることです。あなたは、MachineKeyが同期されていることを確認するためにサーバーの演算子を持っているが、あなた自身で何らかの方法でこれを検証していると述べましたか?これはすべてのWebサーバー上のケースですか?いくつかの商用ウェブホストとの以前の取引から、私は額面価格で保証をすることは(残念ながら)困難であることを発見しました。

FormsAuthenticationの設定(タイムアウト、パス、名前など)がすべてのホストで同じであるかどうかを確認することもあります。

すべてのホストでパッチレベルが同じですか?お使いの状況に該当する互換スイッチ(here)が該当するかどうかを確認したい場合があります。

ホスティングの設定が正しいと仮定すると、条件が満たされていない場合にログアウトするページに初期化コードがあるとしますか?

サーバーのログを調べ、失敗したページ要求中に発生したHTTP要求の順序をトレースしてみてください。それは手掛かりを生むかもしれない。

編集:トラブルシューティングのフォーム認証の問題にこのガイドでは、詳細な、と非常に便利です:クッキーに依存し、他のアプリケーション機能のためのTroubleshooting Forms Authentication

+0

おかげで、トラブルシューティングガイドは、短い遅延の後にページを要求しているときにクライアントが実際にASPXAUTHクッキーを送信していないことを証明し、サーバーが認証されていないと考えてしまったことを証明しました。しかし、私はまだ次のステップが何であるか考えるのに苦労しています。ファイダーのログには "Tunnel to" "www.mydomain.co.uk:443"の両方の時間が表示されるので、なぜ同じURLとして見られず、クッキーを渡すのでしょうか?どちらのサーバーでも、Cookieは「セッションの終了時」として有効期限を示し、ドメイン「https://www.mydomain.co.uk」に関連付けられています。私の理解でうまくいくはずです。 – ColinRobertson

+0

あなたが予測したように、WebホストがMachineKeyの変更を完全に展開していなかったので、私はあなたの答えに合格とマークしました。彼らはFrameworkフォルダでそれを変更しましたが、Framework64フォルダで変更されていませんでした。ご協力いただきありがとうございます。 – ColinRobertson

+0

これはあなたのために今働いてうれしい! – Maxam

0

チェック。サーバーBのWebサーバーは、サーバーAからのCookieを認識しません。認証の一部が実装されているCookieに依存する場合は、問題が発生する可能性があります。

クッキーに使用されているドメインがすべての負荷分散されたサーバーで同じであることをすでに確認しているかもしれませんが、私はそれについて言及したいと思いました。ドメインが互換性がない場合、ブラウザは単にサーバーにクッキーを送信しません。

+0

私の理解は、サーバAとサーバBが同じマシンキーと同じURLを持っていて、クッキーが2つの間で渡された場合です。私はちょうど私のブラウザが彼らが同じURLではないと判断して何らかの理由で見えるので、私はサーバー間で切り替えるときに、クッキーが渡されていないことを発見しました。 – ColinRobertson

+0

2つのことを確認してください:Fiddlerなどで、Cookieがまったく渡されているかどうかを確認します。それが渡された場合は、2つのmachine.configファイルを比較します。 –

+0

ええ、machine.configsは同じではありませんでした。ホストはframework.configのフレームワークフォルダを変更しましたが、framework64フォルダは変更しませんでした。ご協力いただきありがとうございます – ColinRobertson

関連する問題