首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET 身分驗證全解析:七大 IIS 驗證模式與 Forms Authentication 實戰

     編輯:ASP.NET 基礎

為什麼需要身分驗證?

Web 應用程式預設為匿名存取,若無驗證機制,任何人皆可存取受保護資源。身分驗證 (Authentication) 確認「你是誰」,授權 (Authorization) 決定「你能做什麼」。ASP.NET 搭配 IIS 提供多層次驗證選項。

IIS 7.5+ 七大驗證模式總覽

模式適用場景特點
匿名驗證公開網站、靜態資源預設啟用,使用 IUSR 或指定帳號,無需登入
Windows 驗證內部網域環境整合 NTLM/Kerberos,單一登入 (SSO),IE/Edge/Chrome/Firefox 均支援
基本驗證跨平台、非網域Base64 編碼帳密,**必須搭配 HTTPS**,否則明文等同
摘要式驗證網域環境、防重放攻擊MD5 雜湊挑戰回應,需網域控制站,較少用
表單驗證公開網站、自訂登入頁ASP.NET 核心機制,Cookie 儲存票證,彈性最高
ASP.NET 偽裝特定權限存取資源執行緒以特定 Windows 身分執行,非驗證機制
用戶端憑證對應高安全性、雙向 SSL需憑證基礎建設 (PKI),成本高

實測:基本驗證 + SSL 風險示範

  1. IIS 僅啟用「基本驗證」,其餘停用。
  2. 瀏覽器存取會彈出登入對話框 (IE/Firefox/Chrome 樣式不同)。
  3. 輸入正確 Windows 帳密即可存取;錯誤回傳 401.2。
  4. 抓包分析:Authorization 標頭為 Basic base64(user:pwd),Base64 可瞬間解碼,**務必強制 HTTPS**。

IE 基本驗證對話框
Firefox 基本驗證對話框

Windows 驗證補充

  • 非 IE 瀏覽器 (Firefox/Chrome) 亦支援 NTLM/Kerberos,無須僅限 IE。
  • 適用內部系統,外部網站不建議直接暴露 Windows 驗證。

匿名驗證本質

實際上以內建帳號 IUSR 或自訂帳號執行,適合公開內容;搭配 Windows 驗證可實現「公開瀏覽、登入操作」混合模式。

匿名驗證身分設定

重點:Forms Authentication (表單驗證)

ASP.NET 專屬、最彈性、最常用的驗證方式:

  • 自訂登入頁面 (Login.aspx) + 資料庫驗證帳密。
  • 驗證成功寫入加密 Cookie (FormsAuthenticationTicket)。
  • web.config 設定 <authentication mode="Forms"> 保護路徑。
  • 整合 RoleProvider、MembershipProvider 實現角色授權。
  • 支援 SlidingExpiration 滑動過期、Cookieless 模式。

結語與後續規劃

本文概述 IIS 七大驗證模式與實測細節。Forms Authentication 為公開網站主流選擇,後續將深入探討:

  1. Forms Authentication 完整實作 (登入、登出、票證更新)。
  2. 自訂 MembershipProvider 與 RoleProvider。
  3. ASP.NET Identity / ASP.NET Core Identity 現代化架構。
  4. OAuth 2.0 / OpenID Connect 第三方登入整合。

敬請期待後續系列文章!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved