2010-06-10 107 views
1

我有一個建在ASP.net和C#的網站。我們稱之爲webapp。它使用Form系統登錄到它,並且不能被簡單地改變。獲取windows用戶名和javascript

我收到了一個請求,將日誌更改爲某種Windows身份驗證。我會解釋。 我們的Windows登錄使用Active Directory用戶登錄到他們的Windows帳戶。他們的登錄名是sXXXXXXX。 X是數字。 在我的web應用程序中,我想從他們的活動目錄登錄中獲取用戶號碼,並檢查它們是否存在於webapp數據庫中。如果存在,他們將自動登錄。如果不存在,他們將被引用到當前正在使用的webapp系統的常規登錄頁面。

我試着改變我的IIS以禁用匿名登錄並啓用Windows身份驗證,因此使用戶瀏覽器發送它的當前登錄用戶名到我的webapp。我改變了網頁配置,以及從「窗體」到「Windows」,這使得整個webapp已經過時,因爲整個表單系統都不工作。

我的問題是這樣的 - 有沒有不同的方式讓瀏覽器只發送用戶名到我的webapp?我想可能是JavaScript,我只是不知道如何實現,如果它甚至可能。我知道這不是很安全,但是所有這個平臺和系統都是在互聯網之外建立的,它在私人網絡上。

+0

我懷疑。 JavaScript是在相當孤立的環境中執行的,它受到很多限制。沒有人會允許你抓取這樣的數據 – Andrey 2010-06-10 10:58:52

回答

1

我發現越來越發送到服務器的用戶名的解決方案是:

string winlogon = Request.ServerVariables["LOGON_USER"]; 

啓用Windows身份驗證模式在IIS後。

+0

這將返回運行該服務器進程的用戶名稱,而不是客戶端名稱。 – 2015-04-08 13:21:27

1

通過javascript獲取用戶的域憑證的唯一方法是部署某種類型的ActiveX組件,將該數據公開給瀏覽器。我不會推薦。

我會看看在頁面加載時使用HttpContext.Current.User來驗證用戶身份的表單身份驗證的登錄頁面。

表單的工作方式是,如果未經身份驗證的用戶嘗試訪問受訪問控制的頁面並且未登錄(無cookie),則會將其重定向到登錄頁面,以便設施登錄(此設置客戶端上的cookie)。用戶然後被導向他們最初請求的頁面。你只需要自動化登錄部分。

如果你有一個需要手動登錄的傳遞和用戶混合,你可以檢查他們的客戶端IP地址,看它是否與你的域名相匹配。

+0

當前系統完全按照你所說的 - 用戶在登錄頁面進行身份驗證,該頁面在客戶端設置cookie。 當我嘗試在IIS和web.config上啓用Windows身份驗證時,我的網站就無法工作 - 整個登錄表單和網站實際上基於web.config中的表單身份驗證模式 - 我無法更改因爲我的網站將無法正常工作。 我知道ActiveX是不安全的,不推薦,但我只是看不到另一種方式...如果有我會很高興知道。如果沒有,我想要解釋如何實現ActiveX。 – jbkkd 2010-06-10 11:19:54

+0

這裏有一個方便的教程:http://dotnetslackers.com/articles/csharp/writinganactivexcontrolincsharp.aspx。但我不禁認爲有一個明顯的解決辦法。我現在還想不起來! – 2010-06-10 11:30:38

1
<script language="javascript"> 
    var username = '<%HttpContext.Current.User.Identity.Name %>'; 

</script> 
+1

這隻有在啓用了Windows身份驗證的情況下才有效。用戶不能這樣做。 – 2010-06-10 11:28:54

相關問題