部署內部網站並使用 Windows 驗證登入的標準作業流程 分享 📅 2014/01/12 22:56 📁 ASP.NET, ASP.NET MVC, IIS, SQL Server, Visual Studio, 系統管理 上週部署了一個內部網站,部署的過程由於用到很多工具與技術,其步驟稍稍有點繁瑣,特別費心整理了一下標準安裝與設定的步驟,以供後續再次部署時參考。本文會牽涉到 IIS 7.5、ASP.NET 4.5、.NET 4.5.1、SQL Server 2008 R2、Web Deploy 3.5 等技術,且該網站是以 Windows 驗證為主要驗證方法。 伺服器端環境設定 網域要求 伺服器必須加入 Active Directory (AD) 控管 IIS 7.5 已安裝 ASP.NET 已安裝 Windows 驗證功能 透過 Web Platform Install 安裝以下工具 Microsoft .NET Framework 4.5.1 Web Deploy .3.5 設定 Windows 防火牆 需開啟 Web 管理服務 的連接限制 ( Port 8172 ) (有現成的規則,如下圖示) 設定內部網站需要用到的內部域名 ( Domain Name ) 例如:mysite.intranet.local 透過設定 AD 網域主控站上的群組原則,設定公司內部的「近端內部網路」的網址清單 參考文章:如何透過群組原則(GPO)將內部網站加入「近端內部網路」清單 設定 Internet Information Services (IIS) 管理員 新增站台:mysite.intranet.local 設定/啟用 Windows 驗證 檢查應用程式集區的 .NET Framework 版本 因為預設值可能會是 .NET Framework v2.0.50727 版本,所以需要看一下! 我的網站是用 .NET 4.5.1 開發的,所以要切換至 .NET Framework v4.0.30319 請注意:預設建立的應用程式集區,會在系統建立一組虛擬帳戶! 請參見我的另一篇文章:介紹 IIS 7.5 的應用程式集區與新增的「虛擬帳戶」特性 以應用程式集區名稱 mysite.intranet.local 為例,虛擬帳戶就是以下這組: IIS APPPOOL\mysite.intranet.local 修正網站站台目錄的 NTFS 權限 刪除所有 Users 權限 (取消 NTFS 的權限繼承,透過複製的方式再移除 Users 權限) 不刪除 Users 權限代表能夠登入該機器的人都能讀取該資料夾 新增網域使用者的權限,才能讓這些人能夠登入該網站 若要授權網域內所有人都能登入,可以授權給 Authenticated Users 如果有授權給特定人或群組,可以授權給該使用者或群組 新增 IIS_IUSRS 的讀取權限 (這是給匿名登入的時候需要的群組) 設定 SQL Server 資料庫與權限 假設要部署的資料庫已經順利建立在 SQL Server 之中,我們要設定適當的資料庫存取權限 要允許該站台透過 Windows 驗證的方式連接 SQL Server,必須將該虛擬帳號加入到 SQL Server 的登入中,並設定資料庫使用者與該登入對應,但設定過程有些注意事項! 新增登入 設定登入名稱時,千萬不要用「搜尋」的方式,因為你是找不到「虛擬帳戶」的! 請記得一定要用人工輸入登入名稱,並選擇 Windows 驗證 選項,才能成功建立登入與資料庫使用者! 你可以在這個步驟直接設定「使用者對應」,這樣就可以一次設定完登入與資料庫使用者。 ASP.NET 的 web.config 設定 修正 web.config 的驗證設定,這有兩種可能的常用設定: 啟用 Windows 驗證,並拒絕不是用 Windows 驗證進來的使用者。 <system.web> <authentication mode="Windows"> </authentication> <authorization> <deny users="?" /> </authorization></system.web> 僅允許特定使用者登入該網站,預設拒絕所有其他使用者登入該網站 <system.web> <authentication mode="Windows"> </authentication> <authorization> <allow users="domain\username" /> <deny users="*" /> </authorization></system.web> 修正 SQL Server 的連接字串,採用 Windows 驗證登入 SQL Server 備註:透過 Windows 驗證連接 SQL Server 就可以不用留帳號、密碼在 web.config 檔案裡面! 標準的連接字串如下,你只要修改掉預設資料庫名稱即可: Data Source=(local);Initial Catalog=MY_DB_NAME;Integrated Security=SSPI Visual Studio 2013 單鍵發行設定 Visual Studio 2010 如何使用 Visual Studio 2010 的「單鍵發行」功能 (MsDeploy) Visual Studio 2012 / Visual Studio 2013 HOW TO:在 Visual Studio 中使用按一下發行來部署 Web 應用程式專案 ASP.NET Web Deployment using Visual Studio: Introduction 其他相關連結 How to: Access SQL Server Using a Mapped Windows Domain User How To: Connect to SQL Server Using Windows Authentication in ASP.NET 2.0