2010-06-30 43 views
1

我們正在觀察Web服務器日誌中的某些奇怪行爲,其中當前登錄的用戶的身份似乎正在與另一個用戶交換。我將在進一步解釋之前先描述我們的設置。Windows身份在用戶之間混淆

我們在2臺Windows 2008 Web服務器上運行一個asp.net網站(框架的v3.5)並使用表單身份驗證。它們使用在Linux上運行Apache 2.2的單獨服務器進行負載平衡(Cent OS 5) 。負載平衡只需將Cookie附加到用戶,並將其引導至特定的服務器,以滿足每個後續請求。 [email protected]

用戶ID - - 1111

好康 - 第1頁

我們的日誌是這樣的(細節混淆)

第一個日誌條目

用戶名通知中偶爾模式

IP-ip1

時間 - 2010-06-29 12:56:20.750

的SessionID - h3uyz2fsdfegugjy452sdz0far

其次日誌條目

用戶名 - [email protected]

用戶ID - 2222

好康 - 第2頁

IP-ip2

時間 - 2010-06-29 12:57:16.133

的SessionID - 21ipjsdfsdfieqqwyfdokgqsb55

我們正在使用窗體身份驗證使用標準的asp.net表單驗證框架(標準登錄控制,我們實現了一個自定義的成員提供)。

UserName是使用「HttpContext.Current.User.Identity.Name」檢索的Windows標識UserId是會話中設置的數據庫標識。使用「HttpContext.Current.Session.SessionID」獲取sessionId

正如你所看到的,對於2個不同的用戶來說,在不同的IP地址和不同的會話ID下,相同的Windows身份是相同的,點擊網站大致相同時間。我們檢查了IP,它們來自完全不同的地點。錯誤的Windows身份似乎正在被記錄下來。 UserId 2222應該記錄不同的用戶名。

由於它偶爾會發生,代碼是標準的,並且一段時間沒有發生實質性變化,我們不會「認爲」它是編碼錯誤。我們假設負載均衡器出現問題或Web服務器出現問題。我以前從來沒有聽說過asp.net的這種問題。

最近我們確實將Windows 2003上的IIS6和Cisco硬件負載平衡器的設置更改爲Windows 2008上的IIS7和Apache負載平衡的當前設置。任何想法讚賞。

Web中的表單身份驗證條目。配置是

認證模式= 「表單」

形式loginUrl = 「LoginPage.aspx」 NAME = 「ASPXFORMSAUTH」

+0

您的服務器上是否運行了超過1個網站? – TheGeekYouNeed 2010-06-30 10:49:48

+0

是的,有2個網站 – scottrm 2010-06-30 17:09:54

+0

當你說你關閉了輸出緩存時,你的意思是你禁用了它,還是刪除了所有的緩存指令?我們看到了同樣的事情! – 2011-02-04 14:56:03

回答

0

你設置任何會話變量?會話ID的重置爲每個請求,除非您存儲東西,任何在會話中爲每個用戶。

0

你必須保證每個用戶的cookie都是唯一的。你不能依賴於sessionid。

相關問題