Forms Authentication 是 ASP.NET 應用程式最常用的驗證方式。本文剖析其核心運作流程:從 IIS 匿名驗證、FormsAuthenticationModule 管線處理、驗證票證與 Cookie 管理,到 web.config 完整設定參數。
IUSR_MACHINE 帳戶。Token 傳遞給 ASP.NET。authentication mode="Forms" 指定使用 FormsAuthenticationModule(HTTP 模組)處理後續驗證邏輯。重要:Forms Authentication 不依賴 IIS 驗證,IIS 應設為「匿名存取」,讓 ASP.NET 完全掌控驗證流程。
Default.aspx)。FormsAuthenticationModule.OnAuthenticateRequest 檢查 Cookie/查詢字串中的驗證票證。loginUrl(預設 Login.aspx)。FormsAuthentication.SetAuthCookie 或 RedirectFromLoginPage 建立加密票證 Cookie。<system.web>
<authentication mode="Forms">
<forms
loginUrl="Login.aspx"
protection="All" // 加密與驗證:All/Encryption/Validation/None
timeout="30" // 票證逾時分鐘數
name=".ASPXAUTH" // Cookie 名稱
path="/" // Cookie 路徑
requireSSL="false" // 僅 HTTPS 傳輸
slidingExpiration="true" // 活動時重設逾時
defaultUrl="default.aspx" // 登入後預設導向
cookieless="UseDeviceProfile" // UseDeviceProfile/AutoDetect/UseCookies/UseUri
enableCrossAppRedirects="false" // 跨應用程式重導向
/>
</authentication>
</system.web>
設定 cookieless="UseUri" 將票證嵌入 URL:/ (S(abc123))/Default.aspx。適用於不支援 Cookie 的裝置,但需注意 URL 分享導致的安全性風險(Session Hijacking)。
SetAuthCookie(userName, persistCookie):建立驗證 Cookie。RedirectFromLoginPage(userName, persistCookie):建立 Cookie 並導向原頁。SignOut():清除 Cookie,結束驗證。GetAuthCookie():取得 HttpCookie 物件供自訂處理。Decrypt/Encrypt:票證加解密(機器金鑰保護)。掌握 Forms Authentication 完整機制,能靈活處理單一登入 (SSO)、跨應用程式驗證、行動裝置相容等進階需求。