2013-11-27 22 views
2

基本問題:爲什麼我的Web應用程序不使用AppPoolIdentity在同一臺機器上登錄到SQL Server?

我有一個Web應用程序訪問同一臺機器上的SQL Server數據庫。該Web應用程序在其自己的應用程序池下運行 - 我們稱之爲MyAppPool。如果在IIS管理器我轉到高級設置,我可以看到,在ApplicationPoolIdentityMyAppPool運行。當我發出請求的Web應用程序,我可以打開任務管理器,並驗證的w3wp.exe用戶名是MyAppPool。在SQL Server中,我添加了一個Windows用戶IIS AppPool\MyAppPool,並賦予它從數據庫讀取的必要權限。問題是,當登錄嘗試登錄到SQL Server時,登錄失敗的原因是DOMAIN\MACHINE$。它超越了我。爲什麼該應用程序未登錄爲IIS AppPool\MyAppPool

詳情:

我知道這個問題的變種已被要求在其他地方,但我真的沒有卡住的解決方案。我嘗試在web.config上添加<identity impersonate="true" />。如果我這樣做,我的登錄失敗NT AUTHORITY\IUSR。我試圖從託管它的機器訪問網絡應用程序,並獲得相同的登錄錯誤。我正在IIS8,在Windows Server 2012和SQL Server 2012

我能找到最近的問題是Why is my MVC app trying to log into my DB as my machine, and not as the App Pool identity?,以及所提供的解決方案不起作用。我無法改變集成安全性是錯誤的(我過去曾經運行過這個東西)。引用https://stackoverflow.com/a/15145488/147530

ApplicationPoolIdentity使用IIS應用程序池\ ApplicationPool本地 訪問,但對於遠程訪問域\計算機名$

聽起來很合理。問題是,爲什麼ApplicationPoolIdentity不使用IIS AppPool\MyAppPool身份時,DB是同一臺計算機上?

引述另一SO後,IIS application using application pool identity loses primary token?

這個應用程序還連接到使用 集成安全性=在連接字符串中真正的SQL Server數據庫。如果數據庫是 地方,然後我們看到,IIS APPPOOL \ OurAppPoolName用於 連接到數據庫;如果數據庫是遠程的,那麼計算機帳戶 OURDOMAIN \ ourwebserver $使用。

這是我想要的行爲,但沒有得到它,這就是我在這個問題中要求的 - 我不想授予DOMAIN\MACHINE-NAME$登錄到SQL Server的權限。引用https://stackoverflow.com/a/15445280/147530

我認爲這是一個壞主意,但是,因爲它授權運行的網絡服務來訪問數據庫的任何程序 - 不只是你的web應用程序 。

我試了一件事,這是啓用IIS8上的Windows身份驗證使用此鏈接http://www.iis.net/learn/install/installing-iis-85/installing-iis-85-on-windows-server-2012-r2#ModulesinIIS85但這也沒有解決問題。

+0

1)哪個IIS? 2)在「MyAppPool」中,您是否將應用程序池設置爲以特定身份運行?默認情況下,它在LocalSystem下運行。看到這個SO回答:http://stackoverflow.com/questions/7698286/login-failed-for-user-iis-apppool-asp-net-v4-0/8853386#8853386 – tgolisch

回答

1

解決了這個問題。在SSMS中,有一個路徑machine -> security -> logins,其中包含可以登錄到計算機的用戶。我沒有將apppool添加到此列表中。我只添加apppoolmachine -> databases -> my database -> security -> users

0

,而不是試圖給訪問SQL對應用程序池身份的用戶,你應該嘗試的2個下列選項之一:

  1. 創建一個單獨的域用戶運行在IIS應用程序池。爲該用戶提供對SQL Server的相關訪問權限。

  2. 在連接字符串中指定用戶名和密碼,並使用有權訪問SQL Server的用戶。

相關問題