ASP.Net 2.0窗体身份验证机制详解(FormsAuthentication) (转载)
生活随笔
收集整理的這篇文章主要介紹了
ASP.Net 2.0窗体身份验证机制详解(FormsAuthentication) (转载)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ASP.Net 2.0窗體身份驗證機制詳解(FormsAuthentication) 收藏
轉自:http://www.aspxclub.com/l12/c_3689.html 本篇文章介紹了在ASP.Net 2.0如何做窗體身份驗證,并且講解了IIS和ASP.Net2.0窗體身份驗證機制是如何結合在一起的。我們還會詳細講解一下2.0中關于窗體身份驗證的一個類:FormsAuthenticationModule。
<ystem.web> <authorization> <deny users="?" /> </authorization> </system.web> 以上配置表明,沒有通過驗證的用戶都將被拒絕訪問頁面。如果一個沒有驗證的用戶試圖訪問頁面,他將會被重定向到loginUrl屬性定義的登陸頁面上。
if (Membership.ValidateUser(userName.Text, password.Text)) {if (Request.QueryString["ReturnUrl"] != null) {FormsAuthentication.RedirectFromLoginPage(userName.Text,false); } else { FormsAuthentication.SetAuthCookie(userName.Text, false); } } else { Response.Write("Invalid UserID and Password"); } 第七步:用戶驗證成功,服務器重新讓瀏覽器指向ReturUrl所指定的頁面。 第八步:在重定向的同時,瀏覽器向default.aspx頁面發送request請求,此次請求包含用戶的forms authentication cookie。 第九步:FormsAuthenticationModule類偵測到forms authentication cookie并且開始驗證,驗證成功后,該類將得到當前的用戶信息,并傳送給HttpContext對象。可以通過HttpContext對象獲得當前用戶的信息。 第10步:驗證成功,來去自如哦!
? SQL Server。它是默認的提供程序,將角色信息存儲在 SQL Server 數據庫。
? 授權管理器 (AzMan)。該提供程序使用 XML 文件、Active Directory 或 Active Directory 應用程序模式 (ADAM) 中的一個 AzMan 策略存儲作為其角色存儲。它通常用于 Intranet 或 Extranet 方案中,其中 Windows 身份驗證和 Active Directory 用于進行身份驗證。 How To: Use Role Manager in ASP.NET 2.0.?
括號中的 URL 部分包含 Cookie 通常將包含的數據。該數據在請求處理過程中由 ASP.NET 刪除。該步驟由 ASP.NET ISAPI 篩選器執行,而不是在 HttpModule 類中執行。如果從一個 .aspx 頁讀取 Request.Path 屬性,您在 URL 中不會看到任何額外的信息。如果重定向請求,URL 將自動重寫。 注:難以保證 URL 中包含的身份驗證票的安全。當安全性極為重要時,您應該使用 Cookie 存儲身份驗證票。?
轉自:http://www.aspxclub.com/l12/c_3689.html 本篇文章介紹了在ASP.Net 2.0如何做窗體身份驗證,并且講解了IIS和ASP.Net2.0窗體身份驗證機制是如何結合在一起的。我們還會詳細講解一下2.0中關于窗體身份驗證的一個類:FormsAuthenticationModule。
- 綜述
- ?IIS 驗證
- Asp.Net Froms Authentication
- Authorization Configuration(用戶配置)
<ystem.web> <authorization> <deny users="?" /> </authorization> </system.web> 以上配置表明,沒有通過驗證的用戶都將被拒絕訪問頁面。如果一個沒有驗證的用戶試圖訪問頁面,他將會被重定向到loginUrl屬性定義的登陸頁面上。
- Forms Authentication 控制流程
if (Membership.ValidateUser(userName.Text, password.Text)) {if (Request.QueryString["ReturnUrl"] != null) {FormsAuthentication.RedirectFromLoginPage(userName.Text,false); } else { FormsAuthentication.SetAuthCookie(userName.Text, false); } } else { Response.Write("Invalid UserID and Password"); } 第七步:用戶驗證成功,服務器重新讓瀏覽器指向ReturUrl所指定的頁面。 第八步:在重定向的同時,瀏覽器向default.aspx頁面發送request請求,此次請求包含用戶的forms authentication cookie。 第九步:FormsAuthenticationModule類偵測到forms authentication cookie并且開始驗證,驗證成功后,該類將得到當前的用戶信息,并傳送給HttpContext對象。可以通過HttpContext對象獲得當前用戶的信息。 第10步:驗證成功,來去自如哦!
- ?FormsAuthenticationModule
- Forms Authentication Cookies
- 創建Forms Authentication Cookies
- ?創建一個序列化的forms authentication ticket:即創建此對象為一個字節數組(byte array)
- 創建forms authentication ticket的簽名。machineKey中的validation和alidationKey的屬性所設置了生成簽名的算法。我們用此算法計算上面序列化的bytearray,生成MAC(message authentication code)。在默認的選擇中,系統使用的是SHA1的算法。
- 加密forms authentication ticket,同時我們將創建另外一個序列化的對象,此對象經過加密算法加密。這個加密算法也可在machineKey中的decryption和decryptionKey的屬性中獲得。在asp.net 1.1中使用的是3DES加密,而在asp.net2.0中,使用的是AES加密算法。
- 創建HttpCookie對象或者生成cookie的query string,(在不支持cookie時,我們只能生成Query String).HttpCookie 對象創建方法代碼如下:
HttpCookie authCookie = new HttpCookie(
?????????????????????????? ?FormsAuthentication.FormsCookieName,?
??????????????????????????? encryptedTicket);
?加密后的ticket就被添加到了HttpCookie對象中。 - 設置forms authentication cookie為安全的。如果forms authentication ticket被配置成為使用SSL,那么HttpCookie. Secure的屬性也必須設置成true.在這種情況下,瀏覽器只能通過HTTPS協議傳送Cookies.
- 設置HttpOnly bit,在asp.net2.0中,這個屬性默認設置完成。
- 設置當前cookie的屬性。如果需要,可以設置當前cookie的path, domain and和expires屬性
- 添加cookie至cookiecollection,傳給客戶端。Response.Cookies.Add(authCookie);?
- ?角色授權(Role Authorization)
? SQL Server。它是默認的提供程序,將角色信息存儲在 SQL Server 數據庫。
? 授權管理器 (AzMan)。該提供程序使用 XML 文件、Active Directory 或 Active Directory 應用程序模式 (ADAM) 中的一個 AzMan 策略存儲作為其角色存儲。它通常用于 Intranet 或 Extranet 方案中,其中 Windows 身份驗證和 Active Directory 用于進行身份驗證。 How To: Use Role Manager in ASP.NET 2.0.?
- cookieless窗體驗證
ASP.NET 2.0 支持 cookieless 窗體身份驗證。該功能由 forms 元素的 cookieless 屬性控制。該屬性可以設置為以下四個值之一:
? UseCookies。該值強制 FormsAuthenticationModule 類使用 Cookie 傳輸身份驗證票。
? UseUri。該值指示 FormsAuthenticationModule 類重寫 URL 來傳輸身份驗證票。
? UseDeviceProfile。該值指示 FormsAuthenticationModule 類查看瀏覽器功能。如果瀏覽器支持 Cookie,則使用 Cookie;否則,重寫 URL。
? AutoDetect。該值通過一個動態檢測機制指示 FormsAuthenticationModule 類檢測瀏覽器是否支持 Cookie。如果檢測邏輯表明不支持 Cookie,則重寫 URL。
括號中的 URL 部分包含 Cookie 通常將包含的數據。該數據在請求處理過程中由 ASP.NET 刪除。該步驟由 ASP.NET ISAPI 篩選器執行,而不是在 HttpModule 類中執行。如果從一個 .aspx 頁讀取 Request.Path 屬性,您在 URL 中不會看到任何額外的信息。如果重定向請求,URL 將自動重寫。 注:難以保證 URL 中包含的身份驗證票的安全。當安全性極為重要時,您應該使用 Cookie 存儲身份驗證票。?
- MemberShip和LoginControl(成員身份和登錄控件)
ASP.NET 2.0 引入了MemberShip功能和一組登錄 Web 服務器控件,它們簡化了使用窗體身份驗證的應用程序的實現。
- Web Farm Scenarios(Web 場方案)
在 Web 場中,無法確保哪個服務器將處理連續請求。如果用戶在一臺服務器上經過身份驗證,但下一個請求在另一臺服務器上進行,則身份驗證票將導致驗證失敗并請求用戶重新進行身份驗證。
轉載于:https://www.cnblogs.com/zhwl/archive/2011/02/22/1960342.html
總結
以上是生活随笔為你收集整理的ASP.Net 2.0窗体身份验证机制详解(FormsAuthentication) (转载)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: String... 参数定义中有三个点的
- 下一篇: js中比较时间字串大小