2009-10-02 81 views
0

在這個非常有用的摘要從邁克布賴恩Identities for different IIS7 Authentication Configurations,他給出瞭如何IIS 7個處理的不同設置身份驗證的概述(我無法找到一個類似的總結對於IIS 6,這是我們使用的版本)。Thread.CurrentPrincipal.Identity

我們已將身份驗證設置爲集成Windows身份驗證;匿名訪問被關閉,我不使用模擬。 asp.net應用程序位於Intranet中,但我無法控制(並且知之甚少)有多少個域,它們如何相互交互等等。根據這篇文章上面,我應該得到的所有三個相同的用戶信息:

Thread.CurrentPrincipal.Identity 
HttpContext.Current.User.Identity 
Request.LogonUserIdentity 

得到正確的用戶,但外殼是從廣告名稱不同。所以我的問題是:如果

Thread.CurrentPrincipal.Identity 

(這是我使用)給出正確的廣告名稱,而是顯示一個不同的外殼,以AD,是最有可能與Thread.CurrentPrincipal.Identity的問題,與Intranet /域設置或IIS 6之間的區別IIS 7?對於這個問題的含糊性質,我表示歉意:我只是試圖尋找建議,以便最好查看和/或輸入關於使用Thread.CurrentPrincipal.Identity是否存在固有的不明智之處)。

編輯:更新IIS 6 - 根據這個鏈接

http://msdn.microsoft.com/en-us/library/aa302377.aspx

我應該得到域\用戶名的IIS 6一樣,所以沒有區別在那裏。問題可能與Kerberos/NTLM如何與IIS交互有關?

EDIT#2:問題可以總結因此:

我顯示爲例如AD中的DOMAIN \ joebloggs。我以joebloggs身份登錄。但是,我使用Thread.CurrentPrincipal.Identity進行(成功)身份驗證後得到的憑證顯示DOMAIN \ JoeBloggs。這可能來自哪裏?

回答

0

本例中的用戶名由客戶端提供。身份驗證機制驗證身份可以被確認,但它不會替換AD中的用戶提供的名稱和存儲的名稱,因此沒有理由期望套管匹配。

+0

@Nicole:謝謝你的回覆。但是,你的意思是什麼「客戶端」:IIS,操作系統...?我的問題是,「用戶提供的名稱」似乎既不是AD名稱,也不是登錄名(即用戶鍵入的內容),因爲即使在IIS重新啓動的情況下,更改其中一個或兩個都不能解決問題,緩存清空,使用不同的機器等等。 – davek 2009-10-07 06:18:10

+0

...並根據邁克奧布萊恩鏈接,我應該 - 爲我的IIS設置 - 得到DOMAIN \用戶名或HOST \用戶名(暗示,我認爲,這些元素表示的外殼)。 – davek 2009-10-07 06:24:34

+0

Mike O'Brien的文章中沒有提及任何套管,所以我不確定你認爲它在任何方面都是相關的。 – 2009-10-07 13:08:54

0

事實證明,我沒有得到來自客戶端站點準確的信息:即該認證發生的事情我已經明白它(即ASP.Net的方式:查找和AD返回; ASP:傳遞給IIS ),而意外的情況就是緩存問題,而不是認證機制。

相關問題