The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

部署內部網站並使用 Windows 驗證登入的標準作業流程

上週部署了一個內部網站,部署的過程由於用到很多工具與技術,其步驟稍稍有點繁瑣,特別費心整理了一下標準安裝與設定的步驟,以供後續再次部署時參考。本文會牽涉到 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 ) (有現成的規則,如下圖示)
      image
  • 設定內部網站需要用到的內部域名 ( Domain Name )
  • 設定 Internet Information Services (IIS) 管理員
    • 新增站台:mysite.intranet.local
      image
    • 設定/啟用 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 單鍵發行設定

其他相關連結