2011-11-12 28 views
1

我知道你們中的很多人會認爲我的問題已經被問及答案,但我只想討論我嘗試過的很多選項。如何通過網站獲取當前登錄的遠程計算機用戶的用戶名,而您的網絡服務器位於同一網絡上?

現在我的設置是這樣的。 運行windows xp professional的大約50個客戶端。 一臺運行windows server 2003的服務器,稱之爲服務器A 一臺運行squid作爲代理服務器和linux操作系統的服務器。稱之爲服務器B 一臺運行Apache的服務器(雖然是wamp服務器)。稱之爲服務器C. 現在客戶使用Windows活動目錄和域服務器登錄到域服務器A 現在的瀏覽器配置爲使用它的服務器B.

代理服務器被配置爲不允許下載代理服務器大於限制(即我的情況下爲100 Mb)。當客戶端發出超出限制的請求時,用戶將顯示一個錯誤頁面。

現在我已經更換了錯誤頁面,它將用戶重定向到正在C機上運行的我的網站。我還獲得了用戶試圖訪問的鏈接。現在我需要找出哪個用戶登錄到系統中。所以我可以下載該文件,然後通知相應的用戶下載完成。

現在我所能做的只是簡單地詢問用戶的姓名或電子郵件等......但是我想將用戶從再次輸入他的名字的喧囂中拯救出來。

我試過以下選項。

  1. .NET http://www.codeproject.com/KB/cs/getusername.aspx(沒有工作。 可能是我錯過了什麼)
  2. WMIC http://www.robvanderwoude.com/ntadmincommands.php#Cmd02(工作)
  3. authetication通過魷魚(LDAP,活動目錄等)

現在我有有關這個問題。

  1. 這些都是我有的選擇還是我錯過了什麼?
  2. 爲什麼沒有.NET選項工作?
  3. 我可以使用任何各種魷魚身份驗證方法,但我想所有將需要用戶至少登錄一次登錄到計算機後登錄。我不想要這個。有沒有一種方法,我可以使用身份驗證完成時,用戶在adn不再要求他的用戶名和密碼?

回答

2

爲了獲得用戶的域名登錄,在ASP.Net應用程序中,您需要使用Request.ServerVariables("logon_user")

然而,也有其他方面的考慮:

1)您必須只對網站啓用Windows身份驗證。

2)您用戶的瀏覽器(假設IE)必須打開Enable Integrated Windows Authentication

3)如果瀏覽器對您的ASP.Net應用程序的請求是間接的(即,多於1跳),那麼您將必須確保所有相關係統都配置了Kerberos身份驗證(這可能非常「具有挑戰性」)。

您也可以將ASP.Net設置爲impersonate the end user,這將允許您的原始代碼正常工作。但是,這意味着線程中發生的所有事情(數據庫訪問,文件訪問等)都將作爲最終用戶執行。

+0

謝謝你的迴應。只是要清楚。 這會給我訪問我的網站當前登錄用戶的用戶名。我使用了 System.Security.Principal.WindowsIdentity.GetCurrent()。Name 獲取客戶端的用戶名。 當我在運行IIS的同一臺機器上打開網站時,我得到了當前登錄用戶的用戶名。但是當我在另一臺電腦上訪問該網站時,用戶名是另一回事。 – Senstive

+0

GetCurrent()。Name將爲您提供線程執行程序的名稱;如果你打開身份模擬,那麼它「可能」是最終用戶。如果你不這樣做,那麼它將是ASP.Net應用程序池標識。 –

相關問題