﻿# 部署內部網站並使用 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](http://www.microsoft.com/web/downloads/platform.aspx) 安裝以下工具

-   Microsoft .NET Framework 4.5.1
-   Web Deploy .3.5

-   設定 Windows 防火牆

-   需開啟 **Web 管理服務** 的連接限制 ( Port 8172 ) (有現成的規則，如下圖示)  
    ![image](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/a03ad67ace71bcbabe10-image_2399.png "image")

-   設定內部網站需要用到的內部域名 ( Domain Name )

-   例如：mysite.intranet.local
-   透過設定 AD 網域主控站上的群組原則，設定公司內部的「**近端內部網路**」的網址清單  
    參考文章：[如何透過群組原則(GPO)將內部網站加入「近端內部網路」清單](/post/2014/01/10/configure-Internet-Explorer-security-zone-sites-using-group-polices.aspx)

-   設定 Internet Information Services (IIS) 管理員

-   新增站台：mysite.intranet.local  
    ![image](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/ed90c6096208632a6e3d-image_2400.png "image")  
    ![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/e38592de807827fd4618-image_2401.png)
-   設定/啟用 Windows 驗證  
    ![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/517fa73d3d1846d8501e-image_2402.png)  
    ![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/a047beb35ff40c503bc0-image_2403.png)
-   檢查應用程式集區的 .NET Framework 版本

-   因為預設值**可能會是 .NET Framework v2.0.50727** 版本，所以需要看一下！  
    我的網站是用 .NET 4.5.1 開發的，所以要切換至 **.NET Framework v4.0.30319**![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/97033753567dd3bc520c-image_2404.png)
-   **請注意**：預設建立的**應用程式集區**，會在系統建立一組**虛擬帳戶**！  
    請參見我的另一篇文章：[**介紹 IIS 7.5 的應用程式集區與新增的「虛擬帳戶」特性**](/post/2009/09/09/Introduce-IIS-75-Application-Pool-Identity-and-Virtual-Account.aspx)  
    以應用程式集區名稱 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 的登入中，並設定資料庫使用者與該登入對應，但設定過程有些注意事項！
-   新增登入  
    ![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/8a45b5c837d63c8c0a04-image_2405.png)
-   設定登入名稱時，千萬不要用「搜尋」的方式，因為你是找不到「虛擬帳戶」的！  
    請記得一定要用人工輸入**登入名稱**，並選擇 **Windows 驗證** 選項，才能成功建立登入與資料庫使用者！  
    ![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/6ef9b66b0596c838e96c-image_2406.png)  
    **你可以在這個步驟直接設定「使用者對應」，這樣就可以一次設定完登入與資料庫使用者。**

**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)](/post/2010/05/03/Deploying-Web-Application-Project-Using-One-Click-Publish.aspx)

-   Visual Studio 2012 / Visual Studio 2013

-   [HOW TO：在 Visual Studio 中使用按一下發行來部署 Web 應用程式專案](http://msdn.microsoft.com/zh-tw/library/dd465337\(v=vs.110\).aspx)
-   [ASP.NET Web Deployment using Visual Studio: Introduction](http://www.asp.net/mvc/tutorials/deployment/visual-studio-web-deployment/introduction)

**其他相關連結**

-   [How to: Access SQL Server Using a Mapped Windows Domain User](http://msdn.microsoft.com/en-us/library/2xzyzb0f.aspx)
-   [How To: Connect to SQL Server Using Windows Authentication in ASP.NET 2.0](http://msdn.microsoft.com/en-us/library/ff647396.aspx)
