2009-10-20 86 views
0

我有一個web應用程序將駐留在這裏我想獲得用戶的登錄的計算機名稱在生產服務器上,大約如何使用WindowsIdentity.Impersonate來獲取用戶的登錄,而不是ASPNET帳戶

域名/ USERNAME

很多人都告訴我,我必須使用模擬/委派爲了得到這一點,但已經提供了超出任何細節。最初,我的測試使用:

Response.Write("HttpContext: " & HttpContext.Current.User.Identity.Name & " \n") 
Response.Write("Windows Identity: " & WindowsIdentity.GetCurrent.Name & " \n") 
Response.Write("Thread: " & Thread.CurrentPrincipal.Identity.Name & " \n") 
Response.Write(Request.ServerVariables("LOGON_USER")) 
Response.Write(User.Identity.Name) 

這在我的本地卡西尼服務器上產生有效的結果,但沒有發佈時。添加以下行:

Dim ctx As WindowsImpersonationContext = WindowsIdentity.Impersonate(IntPtr.Zero) 

改變的WindowsIdentity到

SERVERNAME \ ASPNET

不過,我希望爲當前用戶的(不是服務器)的用戶名。我如何操作模擬類給我這個?

編輯: 在Heinzi的評論中提供的解決方案似乎是正確的。不過,我相信這只是IE6。我工作的公司可能會在不久的將來轉向IE8,我希望至少確保IE 6/7/8的功能。這可能嗎?

+0

您已經設置了IIS進行集成身份驗證,對吧? – PhilPursglove 2009-10-20 14:35:54

+0

我嘗試過在本地主機/項目上使用集成身份驗證...,但每次都會提示我輸入用戶名和密碼。由於我在使用企業環境,因此我無法直接訪問生產箱的IIS設置。如果我確定切換這個設置可以工作,我可以要求它切換,但它似乎並沒有解決我的本地主機上的任何問題。 – Mark 2009-10-20 14:38:36

+0

關於localhost:如果詢問用戶名和密碼,可能是因爲您的Internet Explorer未配置爲傳遞Windows憑據。確保你在「Intranet」區域(看狀態欄的右下角)。 – Heinzi 2009-10-20 14:44:01

回答

1

您需要

  • 在IIS激活Windows集成身份驗證,
  • 關閉匿名用戶無論是在IIS或在您的web.config文件(<authorization>部分),
  • <system.web>添加<identity impersonate="true" />你的web.config部分。

編輯This question顯示從web.config相關部分。

相關問題