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