Iis-7

使用者身份驗證 – ASP.NET 應用程序中 IIS 中的使用者名不匹配

  • February 28, 2014

上週,一名員工的 Active Directory 使用者名發生了更改(或為他們創建了一個新使用者名)。出於本範例的目的,讓我們假設這些使用者名:

Old: Domain\11111
New: Domain\22222

當此使用者現在使用他們的新使用者名登錄並嘗試使用Windows 身份驗證(未啟用匿名)瀏覽多個 ASP.NET 應用程序中的任何一個時,系統會進行身份驗證,但我們的下一層數據庫驅動權限會阻止它們從被授權。我們追踪到他們的登錄帳戶與 IIS 認為的使用者名不匹配。下面是在 Windows 2008 IIS7.5 環境中執行的應用程序的幾個 ASP.NET 變數的輸出:

Request.ServerVariables["AUTH_TYPE"]: Negotiate
Request.ServerVariables["AUTH_USER"]: Domain\11111
Request.ServerVariables["LOGON_USER"]: Domain\22222
Request.ServerVariables["REMOTE_USER"]: Domain\11111

HttpContext.Current.User.Identity.Name: Domain\11111
System.Threading.Thread.CurrentPrincipal.Identity.Name: Domain\11111

從上面,我可以看到只有 LOGON_USER 伺服器變數具有正確的值,即使用者用於登錄其機器的帳戶。但是,我們使用“AUTH_USER”變數來查找數據庫權限。

在單獨的測試環境(完全不同的伺服器:Windows 2003、IIS6)中,上述所有變數均顯示“Domain\22222”。所以這似乎是一個特定於伺服器的問題,就像憑據以某種方式被記憶體在他們的機器或伺服器上(前者似乎更合理)。

所以問題是:我如何確認是使用者的機器還是伺服器正在破壞請求?我應該如何解決這個問題?

我查看了以下兩個資源,很快就會嘗試第一個資源:

謝謝。

問題在這裡看起來類似於這個問題:

https://stackoverflow.com/questions/168946/iis-returning-old-user-names-to-my-application

為了澄清,這裡是解決方案:

http://support.microsoft.com/kb/946358

引用自:https://serverfault.com/questions/497289