2013-02-22 42 views
3

如果沒有在IIS中啓用Windows身份驗證,是否可以獲取用戶Windows憑據(即用戶名)?在windows auth禁用的情況下,下面的代碼將返回NT AUTHORITY或IIS APPPOOL \ ASP.NET v4.0,具體取決於是否啓用了模擬和匿名身份驗證。在IIS中禁用Windows授權獲取Windows用戶憑據

System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString(); 

我將一個使用表單身份驗證的asp.net web應用程序轉換爲自定義身份驗證。基本上,如果用戶從網絡外部連接,我強制進行憑證檢查,而如果他們從網絡內連接,我希望能夠抓住他們的Windows用戶名。內部部分在我打開Windows身份驗證時起作用,但在網絡外部測試時會出現彈出式登錄框。我需要爲非本地連接禁用Windows身份驗證,或者找出禁用Windows身份驗證的Windows用戶名。有什麼建議麼? (我想到的另一種選擇是將應用程序分成兩部分,每部分都有獨立的身份驗證模式,但我想避免這種情況)。

-I也試過:

System.Web.HttpContext.Current.User.Identity.ToString(); 
System.Threading.Thread.CurrentPrincipal.ToString(); 

回答

1

這樣的事情實際上(種)可能使用Active Directory聯合服務。如果網絡中有Windows用戶,則可以將其配置爲使用其帳戶詳細信息。對於外部用戶,他們可以被重定向到將要求他們登錄的頁面。

但是,這是非常繁重的工作,並且在執行時非常痛苦,並且實際上只適用於有資源使用這種解決方案的企業解決方案。否則,我會說與2現場方法。

+0

我有點想到我將需要使用2網站的方法,只是希望可能有另一種解決方案。感謝您的迴應。 – ovaltein 2013-02-22 21:16:09

1

簡單的答案是否定的。

最好的解決辦法是創建2個網站。一個用於用戶Windows身份驗證的內部用戶,一個用於用戶形成身份驗證但針對AD進行身份驗證的外部用戶。您可以讓用戶始終默認訪問外部網站,然後根據其IP重定向。這是將內部網用戶重定向到內部用戶。

相關問題