asp.net2.0安全性(3)--验证与授权
| "驗證"與"授權"是對網(wǎng)頁資源安全管理的兩道門。 驗證(Authentication):檢查用戶是否是合法的用戶。就像是網(wǎng)站大門口的保衛(wèi),服責驗證使用的用戶名和密碼。 授權(Authorization):檢查用戶是否有訪問某種資源的權限。例如有的人雖然能過了環(huán)保局門口保衛(wèi)的驗證,進入環(huán)保局,但他可能是一個普通科員,那他就沒有局長職責。 ? 驗證與授權的底層運作: 首先,打開windows操作系統(tǒng)的“管理工具”->“計算機管理”->“本地用戶和組”->“用戶”。會看到右側的窗口中列出了好多的計算機用戶,但細心的朋友會發(fā)現(xiàn),你安裝完IIS后會多出一個用戶“IUSR_***”,這個用戶是做什么用的呢?答案是:它是Windows IIS匿名者所使用的授權賬號。而“IUSR-***”中的“***”就是您的計算機名。 然后,你再在c:\inetpub\wwwroot(IIS默認的文件夾)文件夾上右擊,選擇“屬性”(NTFS格式),在“組和用戶名稱”列表中你會看到當前文件夾授權給了“IUSR_***”這個Internet來賓帳戶了。這個授權是必須,不要刪掉。 最后,在 “Internet信息服務管理器(IIS)”中右擊“默認站點”,選擇“目錄安全性”->“身份驗證和訪問控制”->“編輯”打開“身份驗證對話框”,在“用戶名”的文本框中會看到“IUSR_***”這個用戶名。 現(xiàn)大家明白了,客戶機通過網(wǎng)絡來訪問你的網(wǎng)站的時候,是借用了“IUSR_***”這個用戶來訪問你的網(wǎng)站的。而“IUSR_***”這個用戶的權限控制是受“NTFS”的ACL進行設置的。所以IIS的身份驗證的底層運作的主要控管者是由“NTFS”權限管理系統(tǒng)來實現(xiàn)的。 ? 身份驗證: Asp.net2.0中提供的身份驗證模式有三種: 1)????? Windows身份驗證:通過windows的ACL和IIS配合進行驗證的。網(wǎng)站本身沒有帳戶管理功能,全部委托Windows的安全機制來實現(xiàn)。管理員必須為每一個訪問網(wǎng)站的用戶分配一個服務器Windows上的賬戶。這樣問題就來了,在Internet環(huán)境下你很難讓管理員為每一個用戶分配一個賬號,所以這種驗證方式不適用于Internet環(huán)境,只適于公司內(nèi)部的受控環(huán)境中。所以在這里我就略去不說了。 2)????? Forms身份驗證:通過自己的帳戶管理系統(tǒng)和IIS配合進行驗證,并把驗證的身份保存在Cookies中。這種方式適合于Internet環(huán)境。 3)????? Passport身份驗證:此驗證方式是通過微軟提供的Passport服務進行驗證,當然,你需要給微軟交不菲的$了。這種驗證方式我也就略去不說了。 ? 設置你的網(wǎng)站的驗證模式: 1)????? 依次打開“Internet信息服務管理器(IIS)”-“默認站點”-“屬性”-“ASP.NET”-“身份驗證”。在“身份驗證設置”中的下拉列表中選擇你要實現(xiàn)的身份驗證方式(這里我們選擇Forms)。 2)????? 將站點開啟IIS匿名訪問。 3)????? 創(chuàng)建登錄頁面(用戶名和密碼兩個文本框和一個登錄按鈕) 4)????? 編寫“登錄”按鈕的代碼,驗證用戶名和密碼 5)????? 設置網(wǎng)站登錄程序 ??? ????<authentication mode="Forms"> ??????????? <forms loginUrl="Users.aspx" name="auth" protection="All" timeout="60" path="/" /> ??? </authentication> ? <forms>元素的屬性介紹: ?????? name:將來保存Cookie的名稱。 ?????? loginUrl:網(wǎng)站的登錄首面,當未通過身份驗證去訪問網(wǎng)站某頁面時就會被自動轉回所指定的頁面(Users.aspx)。 ?????? protection:Cookie的保存模式,All代表保存時加密,傳輸中驗證。 path:Cookie的保存路徑。若path=”/” Cookie保存為administrator@localhost[1].txt,若path=”mygod” Cookie保存為administrator@mygod[1].txt ?????? timeout:Cookie的有效期。單位是分鐘 ? FormsAuthentication類: ?????? RedirectFromLoginPage(string,bool):驗證通過后網(wǎng)頁轉向用戶要訪問的網(wǎng)頁去。 ?????? RedirectToLoginPage():將網(wǎng)頁轉向指定登錄頁面。 ?????? SignOut():移除用戶身份驗證的信息。 Authenticate(string ,string):對照配置文件中的驗證憑據(jù)進行驗證。返回bool型數(shù)據(jù),代表用戶是否登錄成功。 SetAuthCookie(string,bool):為用戶產(chǎn)生一個用戶驗證票據(jù),并將用戶資料記錄Cookie。 HashPasswordForStoringInConfigFile(string ,passwordformat):將字符串按照指定的加密方式進行單向加密,返回加密后的字符串。 授權: Asp.net2.0中的授權分兩種:文件授權和URL授權。 文件授權:實際上是通過ACL來進行設置來訪用戶對網(wǎng)頁的訪問權限。這種方法對程序開發(fā)人員來說太笨拙。這里不多說了。 URL授權:將用戶和角色對應至數(shù)據(jù)庫中用戶與角色,選擇性地允許與拒絕特定用戶或角色。 URL授權是由UrlAuthorizationModule來執(zhí)行的。作為開發(fā)者只需要對Web.Config文件進行相關配置就可以了。如: </system.web> <authorization> <deny users="bbb"></deny> ??????? <deny roles="admin"></deny> ???? </authorization> </system.web> 這樣就可以拒絕bbb用戶和所有的角色是admin的用戶。 ?-匿名用戶 *-所有用戶 需要說明的一點是,asp.net是按照文件夾進行授權的。要對不同的網(wǎng)頁進行不同的授權的話,那你可以把文件分散到不同的文件夾中去,然后在不同的文件夾中建立不同的web.config文件,對該文件夾下的頁面進行不同的授權。 |
轉載于:https://www.cnblogs.com/30ErLi/archive/2010/09/17/1829051.html
總結
以上是生活随笔為你收集整理的asp.net2.0安全性(3)--验证与授权的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 灼口综合征是什么?怎么治疗好?
- 下一篇: Extjs学习小结