5

這是之前發佈的關於無法模擬當前登錄的Windows用戶的後續內容。有很多好的建議,但前面的線程變得混亂,所以我正在重置這篇文章。希望下面記錄的當前狀態顯而易見問題是什麼。這是一條很破舊的路徑,所以我必須相信我所缺少的只是一點配置步驟。ASP.NET模擬問題(第2部分)

問題:我需要ASP.NET模擬當前登錄的用戶。當我在IIS 7.5下運行時,它不起作用。 IIS Express工作正常,但我相信這是因爲調試會話正在我的用戶標識下運行。

我正在使用Environment.Username來確定此用戶是誰。有人建議這個屬性總是返回登錄的用戶名,但是從我的測試中它返回了來自IIS的模擬用戶。

例如,如果我的web.config有...

<identity impersonate="true" /> 

當我IIS 7.5下運行與設置,Environment.Username回報IUSR。我相信這是IIS匿名用戶帳戶。

如果我改變web.config中......

<identity impersonate="true" userName="domain\jlivermore" password="mypassword" /> 

...然後Environment.Username返回jlivemore。但是,我需要它返回jlivermore而沒有明確地在web.config中設置它。

這裏是我的IIS設置...

.NET授權規則 .NET Authorization Rules

認證 Authentication

一個問題,如果我禁用匿名身份驗證,然後我提示登錄到現場。我認爲如果您是通過域上的Active Directory帳戶登錄的,那麼這個挑戰不會出現?即使我在這個提示中輸入了我的用戶名/密碼,我仍然沒有得到模擬的工作。

enter image description here

基本設置

Basic Settings

回答

1

我也有類似的問題,因爲你描述。問題的基本癥結在於模仿和授權是有區別的。我對此的簡單理解是,當客戶端和服務器位於同一臺機器上時,模擬將起作用。但是,如果客戶端在不同的機器上,則需要委派。

MSDN Reference

是什麼模擬和代表團之間的區別?

模擬在同一臺計算機上將原始的 來電者身份流到後端 資源。 委託將原始呼叫者的 標識流動到運行服務的計算機 以外的 計算機上的後端資源。

相關SO問題

0

您是否嘗試過使用

HttpContext.Current.User.Identity.Name ? 
+0

是的,掙扎返回與Environment.Username相同的名稱。 – 2011-05-21 13:41:30

2

我不知道你是否已經找到答案,但是如果有人是有它的問題,你需要在你的web.config文件

<authentication mode="Windows"/> 
<identity impersonate="true"/> 

以下和IIS,你需要Asp.net模擬啓用,以及啓用Windows身份驗證,其他應禁用。在Windows身份驗證中,轉至高級設置並取消選中啓用內核模式身份驗證。這應該做到這一點。您的網站現在應該爲本地Intranet應用程序設置和使用任何以下的將工作

System.Security.Principal.WindowsIdentity.GetCurrent().Username() 
HttpContext.Current.User.Identity.Name 
System.Threading.Thread.CurrentPrincipal.Identity.Name 

但使用Environment.Username只會返回服務器名稱,希望這可以幫助任何人以這種