IIS Connect To SQL Server With Windows Auth Solutions Comparision


  1. 說明
    1. Connect As Specific User
    2. AppPoolIdentity
    3. ASP.NET Impersonation
  2. 參考資料
  3. 相關連結

教學 IIS 如何在網域的情境下使用 AD User 作為連線遠端 SQL Server 資料庫。同時對於三種解決方案 AppPoolIdentity、ASP.NET Impersonation 以及 “Connect AS Specific User” 進行比較。藉由本次的內容,可以更深入的掌握如何設定 IIS,達到特定的應用程式與資料庫連結組態 😲

logo

說明

Connect As Specific User

可以參考 IIS Connect SQL Server With Windows Authentication 的教學內容,從應用程式的建立、資料庫的管理設定到最後的網站伺服器設定說明。

在尚未啟用 ASP.NET Impersonation 之前,Server Configuration 中的 User Name 為 ApplicationPool Name,⚠️ 但無法遠端連線資料庫,HTTP Module 中的靜態檔案的存取,也會使用 使用 LogOn User 的身分去執行,因此必須要給與靜態檔案 Users / Authenticated Users 的存取權限。

啟用 ASP.NET Impersonation 後,會令 Server Configuration 中的 User Name 改為 Specific User 連線身分中的名稱,同時對於 HTTP Module 中的靜態檔案的存取,也會使用此身分進行代理,但不影響 Services 的使用身分,同時 IIS 會將連線 User / Password 儲存在網頁伺服器的 Config 檔案,如下列路徑:

echo C:\Windows\System32\inetsrv\Config\applicationHost.config

Connect As Specific User

AppPoolIdentity

不需要啟用 ASP.NET Impersonation,藉由設定應用程式集區中的 Identity 來達到遠端資料庫伺服器存取代理,Server Configuration 中的 UserName 為 Specific User,對於 HTTP Module 中的靜態檔案的存取,仍會使用 LogOn User 的身分去執行,此外會使 Services 改以 AD User 身份執行,適用的情境如共用 Storage 的 Web Farm。

AppPoolIdentity

ASP.NET Impersonation

啟用 ASP.NET Impersonation,但不設定 Specifig User,而是由 ASP.NET Impersonation 設定連線所使用的身分。在尚未設定之前會以 NT AUTHORITY\ANONYMOUS LOGON 嘗試連線資料庫伺服器,會連線失敗。此外此時 Server Configuration 的 UserName 為 LogOn User,存取 HTTP Module 中的靜態檔案的亦會使用 LogOn User 的身分去執行。

而在設定完成 ASP.NET Impersonation 連線所使用的身分後,會將 ASP.NET Impersonation 的連線 User / Password 儲存在 Web.config 當中,此時 Server Configuration 的 UserName 仍為 LogOn User,存取 HTTP Module 中的靜態檔案的亦仍會使用 LogOn User 的身分去執行。

ASP.NET Impersonation

參考資料

探究科學的方法

Use Windows Authentication in ASP.NET 2.0

相關連結

IIS 筆記整理

IIS 網頁伺服器的安全設定 (IIS Security Configuration)