2010-02-24 46 views
9

經典ASP Request.ServerVariables(「LOGON_USER」)返回錯誤的用戶名。這裏是場景:經典ASP Request.ServerVariables(「LOGON_USER」)返回錯誤的用戶名

我在域上有兩個帳戶,一個用於管理,一個用於正常使用。 管理員帳戶在運行ASP腳本的服務器上設置爲admin(在Administrators組中)。服務器是運行IIS 6.0的Windows 2003。

我用我的普通用戶帳戶登錄到我的機器並轉到頁面,它返回我的管理員帳戶用戶名。這是爲什麼發生?這適用於其他人。

<% 
Response.Write "LOGON_USER: " & Request.ServerVariables("LOGON_USER") & "<br>" 
Response.Write "REMOTE_USER: " & Request.ServerVariables("REMOTE_USER") & "<br>" 
Response.Write "AUTH_USER: " & Request.ServerVariables("AUTH_USER") & "<br>" 
Response.Write "<br>" 
'Show all server variables 
For Each Item In Request.ServerVariables 
Response.Write Item & " = " & Request.ServerVariables(Item) & "<br>" 
Next 
%> 

匿名訪問已關閉且Windows身份驗證已打開。

感謝,

傑瑞

+2

下運行什麼帳戶的IIS應用程序池? – Kane 2010-02-24 09:52:54

+0

AUTH_USER會說相同嗎?是否啓用匿名訪問?如果是這樣,爲匿名用戶配置了哪個帳戶? – AnthonyWJones 2010-02-24 09:56:02

+0

它在系統帳戶下運行 – Jari 2010-02-24 10:01:01

回答

5

潛在的問題可能是事實,我有$共享開放與同時具有相同的服務器IE與普通用戶對ASP會話管理員用戶名在同一臺服務器。

更改用戶返回到正常的人可以從控制面板來完成 - >用戶帳戶 - >管理你的密碼 - >選擇有問題的服務器,並更改用戶名,以正確的。無需輸入密碼。好的,關閉並取消。您可能需要打開一個新的IE才能使更改生效。

這需要在用戶每次更改「幕後」時完成。

+0

您運行的是哪個服務器版本,因爲這與我看到的屏幕不符,而且我患有相同的問題 – pee2pee 2013-08-05 10:37:17

+0

如果您在初始網絡驅動器映射上勾選了「記住我」,則即使斷開連接後憑據存儲在該位置。 – svandragt 2014-08-18 13:42:55

0

的IIS可能是管理員用戶下運行,因此你得到這個名字。請在你身邊檢查一下。

+0

如果認證濾波裝置,ISAPI篩選器,那麼就是沒有安裝它在系統帳戶 – Jari 2010-02-24 10:01:52

1

根據這一變量MSDN文檔:

的Windows帳戶的用戶假冒同時連接到您的Web服務器。使用REMOTE_USER,UNMAPPED_REMOTE_USER或AUTH_USER查看請求標頭中包含的原始用戶名。唯一一次LOGON_USER保存與這些其他變量不同的值的是,如果您安裝了認證過濾器。

也許你有一個驗證過濾器。

+0

運行。 – Jari 2010-02-24 10:46:35

2

我不能根據目前提供的信息來解釋你所看到的。我可以告訴你,應用程序池正在運行的帳戶是無用的。

傳統的ASP總是冒充用戶匿名用戶帳戶或與請求到達的連接關聯的用戶。這可能是你的問題的線索。

ASP中的身份驗證在連接級別進行處理,一旦連接已通過身份驗證,它就與用戶關聯。下游的客戶端和其他HTTP設備可能會保持連接。所有後續到達連接的請求都不需要重新認證,與連接關聯的當前用戶用於提供處理請求的線程模擬的用戶上下文。

我見過intermedatory設備或調試代理(如fiddler)保持連接並重新使用它們以便來自各種客戶端的後續請求。在這種情況下,可能有一個客戶端在一個用戶上下文中運行,以便在不同用戶的上下文中處理Web服務器處理的請求。討厭!

我在舊的Citrix終端服務器上看到過類似的事情。 HTTP連接由在終端服務器上運行的多個客戶端共享,從而導致安全上下文的交叉。哎喲!

此問題的另一個變體是服務器上的資源對Intranet上的當前用戶的拒絕訪問。瀏覽器顯示一個網絡登錄對話框,用戶輸入一個管理員用戶。在會話期間,瀏覽器現在使用管理員用戶登錄憑據訪問同一服務器上的其他資源,即使當前登錄用戶可以執行此操作。