簡介

Internet Information Server, IIS 是微軟建構在 Windows Server 作業系統上 Web Server,負責管理各種網路服務的整合介面,對於 ASP.NET 開發人員與部分伺服器管理者應該不陌生。IIS 內可以安裝多種驗證方式,提供 Web Application 運用。在這篇文章,我們將簡單介紹 IIS 內常見的驗證方法。


介紹

匿名驗證 (Anonymous Authentication)
匿名驗證可以讓使用者存取網站公開部分,而不需要輸入任何帳號密碼。因為不需要進行任何身分驗證,所以有比較好的效能。在 IIS 安裝時即預設安裝,且不能移除只能關閉 (disabled)。當你啟用匿名驗證時,IIS 不會啟動其他身分驗證,除非 NTFS 權限設定拒絕訪問資源。


基本驗證 (Basic Authentication)
基本驗證是一種允許客戶端向伺服器提出請求時提供名稱與密碼的一種驗證方式,為 HTTP 1.0 規範的一部分。基本驗證將名稱與密碼以冒號連結後,透過 Base64 演算法編碼寄送出去。 由於 Base64 容易解碼,故基本驗證的安全性相當低,很少在公開存取網站上使用。若要提供此驗證方法的安全性,可以結合 SSL/TSL 使用,但相對的會影響效能,因為交換的資訊皆會加解密。IIS 有實作基本驗證,故您可以安裝並啟用基本驗證模組 (預設不安裝也不啟用)。


Windows 驗證 (Windows Authentication)
Windows 驗證仰賴作業系統來驗證應用程式的使用者。當伺服器在公司網路運作,您可以透過 Active Directory 網域辨識進行 Windows 驗證或透過 Windows 帳號辨識使用者。 Windows 驗證最適合用於內部網路環境,其中使用者、用戶端應用程式以及網站伺服器皆屬於相同 Windows 網域。


摘要驗證 (Digest Authentication)
摘要式身份驗證,用戶端將用戶名和密碼的 MD5 Hash 寄送至伺服器 (以不發送真實憑證方式)。如果成功,摘要式驗證將 Windows Token 關聯至使用者的 AD 帳戶進行授權請求。它是一種 challenge-based 驗證方法 (如同基本驗證),所以如果401 驗證失敗,Header 會包含 www-authenticate: digest 資訊。若用戶端也支援摘要式驗證,此時就會要求用戶輸入登入資訊,並透過憑證的 hash 重新發送請求。

表單驗證 (Form Authentication)
表單身份驗證讓未經身份驗證的用戶導向 HTML 表單,在表單畫面輸入憑證(通常是用戶名和密碼)。 IIS檢查 Request 並執行其身份驗證流程,然後將相關資料傳遞給 ASP.NET,以便它可以執行驗證任務。
驗證後,用戶會被重導向到他們原先請求的頁面。這是一個在應用程序曾管理用戶註冊與驗證流程,而客戶在註冊表單註冊並提供相關憑證。


Universal Naming Convention (UNC) Authentication
這其實不是真正身分驗證方法,他透過 UNC 身份驗證來建立辨識。網站伺服器透過 UNC 認證建立辨識,主要存取透過 UNC 分享之虛擬目錄內的應用程式。通常會使用虛擬目錄的固定憑證,或者經過身分驗證方式進行存取


Client Certificate Mapping Authentication
此驗證方法允許客戶端透過 SSL連接 提供客戶端證書來對賜福器進行身份驗證。在 AD 中的Directory Services (DS) Mapper 服務,將使用者提供的客戶端驗證對應到網域帳號。使用此驗證方法需要下列條件:
1. Web 伺服器必須是 Windows 網域內的成員
2. 必須使用 Web 伺服器信任的 CA 向您的用戶頒發客戶端證書
3. 必須將每個客戶端證書映射到 AD 中的 Windows網域帳戶

透過下列步驟在 IIS 上啟用 Client Certificate Mapping Authentication
1. 確保模組已經安裝(若無安裝請安裝 Client Certificate Mapping Authentication 模組)
2. 啟用 Client Certificate Mapping Authentication
3. 使用此身份驗證方法的每個網站上設定 SSL。
4. 為每個網站的 SSL 綁定啟用 DS Mapper (當啟用每個網站並為網站設置 SSL 綁定時,IIS會自動執行此操作)。
5. 使用此身份驗證方法設置每個網站以接受客戶端證書。


IIS Client Certificate Mapping Authentication
IIS Client Certificate Mapping Authentication 不依賴於 DS Mapper 服務將客戶端證書對應到Windows帳戶。它透過設定來執行對應。 因此,不需要網域用戶帳戶和操作AD。 支援:
One-to-one mapping, :將單個客戶端證書對應到特定Windows帳戶
Many-to-one mapping:將多個客戶端證書映射到Windows帳戶



安裝與啟用方式

若您的環境是 Windows Server → Server Manage → Add Role and Feature,依照安裝精靈持續到Role 選擇 Web Server(IIS),在持續下一步直到 Add Role Service → 選擇 Security → 勾選你要的驗證方法

若你的環境是 Windows 10,你可以在控制台(control pane) → Program → Turn Windows feature on or off → Internet Information Services → World Wide Web Services → Security ,勾選你要的驗證方法