2012-12-05 31 views
5

我們的運營商已經實施了我們的門戶網站一個循環賽負載平衡器,它似乎會造成一些問題,我不能去的底部。用戶被註銷網站由於循環賽負載平衡器

我能夠確定我們是在和我們瀏覽我們留在服務器A在工地附近的哪個服務器如果我離開它5分鐘,並嘗試另一個網頁,我會推送到服務器B,登錄出並顯示登錄頁面。

我已經讓他們確保machine.config中的MachineKey在兩臺服務器上都是相同的,並且我在本地測試了會話沒有被使用 - 我可以在本地完全關閉會話,仍然有效。我已經在兩臺服務器上驗證了它在域上創建了一個ASPXAUTH cookie,因此我們應該在兩臺服務器上分類爲已驗證 - 但每次更換服務器時都要保留我的身份驗證。

有什麼想法可能導致註銷?我猜這是我對ASPXAUTH如何工作的誤解。

回答

2

會話與表單身份驗證分開處理。這個here有一個很好的解釋。

用於在負載平衡環境表單驗證失敗的最常見的原因是缺乏machineKey元素的同步。你已經說過你有服務器操作員來確保MachineKey是同步的,但是你是否以某種方式驗證了這一點?這是所有網絡服務器的情況嗎?從以前與幾家商業網站主機的交易中,我發現(不幸)很難以面值接受他們的保證。

另一件事是檢查是否FormsAuthentication配置(超時,路徑,名稱等)上的所有主機的相同。

是補丁級別上的所有主機的一樣嗎?您可能想要查看提及的兼容性開關here是否適用於您的情況。

假設主機設置是正確的,也許你有初始化代碼,它記錄你,如果沒有滿足一定條件的網頁上?

嘗試查看服務器日誌並跟蹤失敗的頁面請求期間涉及的HTTP請求的順序。這可能會產生線索。

編輯:該指南故障排除窗體身份驗證問題詳細,並且相當有幫助:Troubleshooting Forms Authentication

+0

謝謝,故障排除指南幫助我確定客戶端在短暫延遲後請求頁面時實際上並未發送ASPXAUTH cookie,導致服務器認爲它們未通過身份驗證。不過,我仍然在努力思考下一步是什麼。提琴手日誌顯示「隧道到」「www.mydomain.co.uk:443」兩次,所以爲什麼它不會看到作爲相同的URL並通過cookie?在這兩個服務器上,cookie顯示過期爲「在會話結束時」,並與域名「https://www.mydomain.co.uk」相關聯......這在我的理解中應該起作用。 – ColinRobertson

+0

我已將您的答案標記爲已接受,因爲正如您所預料的那樣,Web主機尚未完全部署MachineKey更改。他們在Framework文件夾中更改了它,但在Framework64文件夾中沒有更改。謝謝你的幫助。 – ColinRobertson

+0

很高興它現在爲你工作! – Maxam

0

檢查取決於餅乾任何其他應用程序的功能。服務器B上的Web服務器將無法識別來自服務器A的Cookie。如果您的身份驗證的任何部分取決於正在填充的Cookie,則可能會導致您的問題。

您可能已經確保用於cookie的域在所有負載平衡的服務器上都是相同的,但我想我會提到這一點。如果域名不兼容,那麼瀏覽器將不會向服務器發送cookie。

+0

我的理解是,如果服務器A和服務器B具有相同的機器密鑰和相同的URL,則Cookie將在兩者之間傳遞。我剛剛發現,當我在服務器之間切換時,Cookie並未傳遞,所以看起來由於某種原因,我的瀏覽器正在判定它們不是同一個URL。 – ColinRobertson

+0

檢查兩件事情:用Fiddler或其他東西看看cookie是否被傳遞。如果_is_被傳遞,則比較兩個machine.config文件。 –

+0

是的,它是機器。配置不一樣。主機已經改變了框架文件夾中的machine.config,但沒有改變framework64文件夾。謝謝你的幫助 – ColinRobertson