2011-12-19 30 views
3

我在我身邊!IIS仍然通過池身份訪問資源,而不是模擬用戶

在Server 2003上,我配置了一個INTRANET應用程序,用於使用BASIC AUTHENTICATION和帶有專用帳戶的應用程序池。

在web.config中我指定

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

的視圖(MVC 3):

<p>Environment.UserName (authentication): @Environment.UserName</p> 
<p>User.Identity.Name (asp.net account): @User.Identity.Name</p> 

這說明我的域帳戶被拾起預期(我登錄到該應用程序通過對話框)。大!

但是等待!當應用程序訪問文件系統或sql server(另一臺機器)時,它不會通過我的域帳戶,而是通過池帳戶。我可以看到通過分析器進入的SQL登錄。我也通過文件系統權限驗證了這一點。如果我將池設置爲使用網絡服務,則無法創建本地文件,即使通過我正在使用的域帳戶擁有權限,也可以交互式執行。如果我授予NS帳戶對這些文件的權限,它就可以工作。所以我知道一個事實,即使該視圖確認我正在冒充,資源請求不會使用該帳戶,而是使用該池。

如果我關閉模擬,我會按預期在視圖中看到池ID。

從我讀過的,我應該能夠使用基本身份驗證來訪問遠程sql服務器,對不對?更不用說本地磁盤了。我只是不明白!

任何建議將不勝感激。

謝謝!

回答

2

模擬以IIS結束。要繼續將用戶憑據傳遞到第二臺遠程服務器,您需要在Web服務器和文件服務器之間啓用委派。這是Active Directory中的計算機之間的標誌位設置。

+1

謝謝賈森。我的印象是,代表團在這種情況下不適用,因爲我們使用基本認證 - IIS將使用憑證轉發令牌。我找到了一位前員工的文件,描述了一個與您的陳述相符的流程,但這是非常深入的內容。你能否解釋爲什麼即使本地資源(文件I/O)不會在模擬帳戶下發生? – 2011-12-19 21:10:40

+0

,因爲您正在離開http/IIS的上下文。這是設計的,因爲它會創建一個巨大的安全漏洞,允許客戶端訪問虛擬目錄之外的服務器。 – 2011-12-19 21:31:41

+0

我一直在研究代表團。有兩個注意事項: 1.根據微軟文檔(http://msdn.microsoft.com/en-us/library/ff647404.aspx)基本認證將自動委託。我多次遇到這種說法。從我的觀點來看,這應該涵蓋我的案例。以下是直接引用: – 2011-12-20 15:56:27

相關問題