日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

進(jìn)攻asp.net - 基于窗體的身份驗(yàn)證 - V6bbs

 suncly 2006-05-17

基于窗體的身份驗(yàn)證

基于窗體的身份驗(yàn)證是 ASP.NET 身份驗(yàn)證服務(wù),它使應(yīng)用程序能夠提供它們自己的登錄 UI 和進(jìn)行它們自己的憑據(jù)驗(yàn)證。ASP.NET 驗(yàn)證用戶的身份,將未授權(quán)的用戶重定向到登錄頁(yè)并執(zhí)行所有必要的 Cookie 管理。這種身份驗(yàn)證是許多 Web 站點(diǎn)使用的流行方法。

應(yīng)用程序必須被配置成使用基于窗體的身份驗(yàn)證,將 <authentication> 設(shè)置為 Forms 并且拒絕匿名用戶訪問(wèn)。下面的示例說(shuō)明如何在所需應(yīng)用程序的 Web.config 文件中完成此配置:

<configuration> <system.web> <authentication mode="Forms"/> <authorization> <deny users="?" /> </authorization> </system.web> </configuration>

管理員使用基于窗體的身份驗(yàn)證來(lái)配置要使用的 Cookie 名稱、保護(hù)類型、用于登錄頁(yè)的 URL、Cookie 生效的時(shí)間長(zhǎng)度以及用于已發(fā)布 Cookie 的路徑。下表顯示了 <Forms> 元素(它是下面的示例中顯示的 <authentication> 元素的子元素)的有效屬性:

<authentication mode="Forms"> <!-- protection="[All|None|Encryption|Validation]" --> </forms> </authentication>
屬性 說(shuō)明
loginUrl 未授權(quán)的用戶被重定向到的登錄 URL。它可以在同一臺(tái)計(jì)算機(jī)上或在遠(yuǎn)程計(jì)算機(jī)上。如果它在遠(yuǎn)程計(jì)算機(jī)上,兩臺(tái)計(jì)算機(jī)需要對(duì) decryptionkey 屬性使用相同的值。
name 用于身份驗(yàn)證目的的 HTTP Cookie 的名稱。注意:如果不止一個(gè)應(yīng)用程序要在一臺(tái)計(jì)算機(jī)上使用基于窗體的身份驗(yàn)證服務(wù),則每個(gè)應(yīng)用程序應(yīng)該配置唯一的 Cookie 值。為了避免在 URL 中導(dǎo)致依賴項(xiàng),ASP.NET 在設(shè)置身份驗(yàn)證 Cookie 時(shí)將“/”用作 Path 值,這使 Cookie 被發(fā)送回站點(diǎn)上的每個(gè)應(yīng)用程序。
timeout 以整數(shù)分鐘為單位的時(shí)間量,超過(guò)此時(shí)間量,Cookie 將過(guò)期。默認(rèn)值是 30。超時(shí)屬性是一個(gè)變化值,從收到最后一個(gè)請(qǐng)求的時(shí)間開(kāi)始計(jì)算,它過(guò)期 n 分鐘。為了避免對(duì)性能產(chǎn)生負(fù)面影響,也為了避免那些打開(kāi)了 Cookie 警告的應(yīng)用程序產(chǎn)生多個(gè)瀏覽器警告,Cookie 在超時(shí)時(shí)間過(guò)半時(shí)更新。(這意味著在某些情況下會(huì)丟失可能的精度。)
path 用于已發(fā)出 Cookie 的路徑。默認(rèn)值為“/”以避免因路徑中有不匹配的大小而帶來(lái)的困難,因?yàn)樵诜祷?Cookie 時(shí),瀏覽器嚴(yán)格區(qū)分大小寫。共享服務(wù)器環(huán)境中的應(yīng)用程序應(yīng)該使用此指令維持專用 Cookie。(另一種方法是,它們可以使用 API 在運(yùn)行時(shí)指定路徑以發(fā)出 Cookie。)
protection 用于保護(hù) Cookie 數(shù)據(jù)的方法。有效值如下所示:
  • All:同時(shí)使用數(shù)據(jù)驗(yàn)證和加密來(lái)保護(hù) Cookie。配置的數(shù)據(jù)驗(yàn)證算法基于 元素。如果三重 DES 可用并且密鑰足夠長(zhǎng)(48 位),則使用三重 DES 進(jìn)行加密。All 是默認(rèn)(和建議)值。
  • None:用于僅將 Cookie 用于個(gè)性化并且安全要求不高的站點(diǎn)。加密和驗(yàn)證都可以被禁用。盡管以此方式使用 Cookie 需謹(jǐn)慎,但對(duì)于使用 .NET 框架實(shí)現(xiàn)個(gè)性化的任何方法,此設(shè)置提供了最佳性能。
  • Encryption:使用 TripleDES 或 DES 加密 Cookie,但不對(duì) Cookie 進(jìn)行數(shù)據(jù)驗(yàn)證。這類 Cookie 容易受到精心選擇的純文本的攻擊。
  • Validation:不加密 Cookie 的內(nèi)容,但驗(yàn)證 Cookie 數(shù)據(jù)在傳輸過(guò)程中是否未被更改。若要?jiǎng)?chuàng)建 Cookie,驗(yàn)證密鑰在緩沖區(qū)中與 Cookie 數(shù)據(jù)連接,并且計(jì)算出 MAC 并將其追加到輸出的 Cookie。

配置了應(yīng)用程序后,需要提供一個(gè)登錄頁(yè)。下面的示例顯示了一個(gè)簡(jiǎn)單的登錄頁(yè)。示例在運(yùn)行時(shí)要求 Default.aspx 頁(yè)。未授權(quán)的請(qǐng)求被重定向到登錄頁(yè) (Login.aspx),此頁(yè)顯示一個(gè)簡(jiǎn)單的窗體,提示用戶輸入電子郵件地址和密碼。(使用 Username="jdoe@somewhere.com" 和 Password="password" 作為憑據(jù)。)

驗(yàn)證了憑據(jù)后,應(yīng)用程序調(diào)用下列內(nèi)容:

<script language=JavaScript> function doClick(index, numTabs, id) { document.all("tab" + id, index).className = "tab"; for (var i=1; i < numTabs; i++) { document.all("tab" + id, (index + i) % numTabs).className = "backtab"; } document.all("code" + id, index).style.display = ""; for (var j=1; j < numTabs; j++) { document.all("code" + id, (index + j) % numTabs).style.display = "none"; } } </script>

FormsAuthentication.RedirectFromLoginPage(UserEmail.Value, PersistCookie.Checked);
            
C# VB JScript  

這將用戶重定向回當(dāng)初請(qǐng)求的 URL。不想執(zhí)行重定向的應(yīng)用程序可以或者調(diào)用 FormsAuthentication.GetAuthCookie 來(lái)檢索 Cookie 值,或者調(diào)用 FormsAuthentication.SetAuthCookie 將正確加密的 Cookie 附加到輸出的響應(yīng)中。對(duì)于提供嵌入在包含頁(yè)中的登錄 UI 的應(yīng)用程序,或者想要更多地控制用戶被重定向到的位置的應(yīng)用程序而言,這些方法很有用。身份驗(yàn)證 Cookie 既可以臨時(shí)又可以永久(“持久”)。臨時(shí) Cookie 只在當(dāng)前瀏覽器會(huì)話期間保持。當(dāng)瀏覽器關(guān)閉時(shí),臨時(shí) Cookie 隨即丟失。永久 Cookie 則被瀏覽器保存,并在瀏覽器會(huì)話間回發(fā),直到被用戶顯式刪除。

  按住 Ctrl+鼠標(biāo)滾輪/中鍵 改變/還原圖片大小
VB 基于窗體的/Cookie 身份驗(yàn)證

[運(yùn)行示例] | [查看源代碼]

窗體身份驗(yàn)證使用的身份驗(yàn)證 Cookie 由 System.Web.Security.FormsAuthenticationTicket 類的線性版本組成。信息包括用戶名(但沒(méi)有密碼)、使用的窗體身份驗(yàn)證版本、發(fā)出 Cookie 的日期以及可選的應(yīng)用程序特定數(shù)據(jù)的字段。

通過(guò)使用 FormsAuthentication.SignOut 方法,應(yīng)用程序代碼可以撤消或移除身份驗(yàn)證 Cookie。這將移除身份驗(yàn)證 Cookie,不論它是臨時(shí)的還是永久的。

還可以使用配置為基于窗體的身份驗(yàn)證服務(wù)提供有效憑據(jù)的列表,如下例所示:

<authentication> <credentials passwordFormat="SHA1" > <user name="Mary" password="GASDFSA9823598ASDBAD"/> <user name="John" password="ZASDFADSFASD23483142"/> </credentials> </authentication>

應(yīng)用程序然后可以調(diào)用 FormsAuthentication.Authenticate 并提供用戶名和密碼,ASP.NET 將驗(yàn)證憑據(jù)。根據(jù) passwordFormat 屬性的下列值,憑據(jù)可以存儲(chǔ)在明文中,或者存儲(chǔ)為 SHA1 或 MD5:

哈希類型 說(shuō)明
Clear 密碼存儲(chǔ)在明文中
SHA1 密碼存儲(chǔ)為 SHA1 摘要
MD5 密碼存儲(chǔ)為 MD5 摘要

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多