詳解ASP.NET身份驗(yàn)證服務(wù)
身份驗(yàn)證和授權(quán)
ASP.NET 與 IIS 一起使用以支持身份驗(yàn)證,并使用基本、簡(jiǎn)要和 Windows 身份驗(yàn)證。ASP.NET 支持 Microsoft Passport 身份驗(yàn)證服務(wù),該服務(wù)提供單一登錄服務(wù)和對(duì)用戶(hù)配置文件服務(wù)的支持。ASP.NET 還為要使用基于窗體的身份驗(yàn)證的應(yīng)用程序提供可靠的服務(wù)?;诖绑w的身份驗(yàn)證使用 Cookie 鑒別用戶(hù)的身份,并允許應(yīng)用程序執(zhí)行自己的憑據(jù)驗(yàn)證。
認(rèn)識(shí)到 ASP.NET身份驗(yàn)證服務(wù)取決于 IIS 提供的身份驗(yàn)證服務(wù)很重要。例如,若要在 IIS 應(yīng)用程序中使用基本身份驗(yàn)證,必須使用 Internet 服務(wù)管理器工具為應(yīng)用程序配置基本身份驗(yàn)證的使用。
ASP.NET 提供兩類(lèi)授權(quán)服務(wù):
根據(jù) ACL 或資源權(quán)限進(jìn)行檢查,以確定已經(jīng)過(guò)驗(yàn)證的用戶(hù)帳戶(hù)能否訪(fǎng)問(wèn)資源。
URL 授權(quán),它授權(quán) Web 空間各部分的標(biāo)識(shí)。
為闡釋差異,請(qǐng)考慮這樣一個(gè)方案,在該方案中應(yīng)用程序被配置為允許使用 IUSR_MYMACHINE 帳戶(hù)進(jìn)行匿名訪(fǎng)問(wèn)。在授權(quán)對(duì) ASP.NET 頁(yè)(如“/default.aspx”)的請(qǐng)求后,根據(jù) ACL 檢查該文件(例如“c:\inetpub\wwwroot\default.aspx”)以確定 IUSR_MYMACHINE 帳戶(hù)是否具有讀取該文件的權(quán)限。如果有,則授權(quán)訪(fǎng)問(wèn)。文件授權(quán)自動(dòng)執(zhí)行。
對(duì)于 URL 授權(quán),根據(jù)為 ASP.NET 應(yīng)用程序計(jì)算的配置數(shù)據(jù)對(duì)匿名用戶(hù)進(jìn)行檢查。如果允許訪(fǎng)問(wèn)請(qǐng)求的 URL,則授權(quán)該請(qǐng)求。在這種情況下,ASP.NET 檢查匿名用戶(hù)是否具有對(duì) /Default.aspx 的訪(fǎng)問(wèn)權(quán)(即檢查根據(jù)的是 URL 本身而不是 URL 最終解析到的文件)。
可能看起來(lái)差異很小,但它使應(yīng)用程序能夠使用像基于窗體的身份驗(yàn)證或護(hù)照身份驗(yàn)證(在此身份驗(yàn)證中用戶(hù)與計(jì)算機(jī)或域帳戶(hù)并不對(duì)應(yīng))這樣的身份驗(yàn)證方案。此外,它還啟用對(duì)虛擬資源的授權(quán),這類(lèi)資源沒(méi)有物理文件作為基礎(chǔ)。例如,應(yīng)用程序可選擇將以 .stk 結(jié)尾的文件的所有請(qǐng)求映射到某一處理程序,該處理程序基于查詢(xún)字符串中存在的變量提供常用引號(hào)。在這種情況下,不存在執(zhí)行 ACL 檢查所依據(jù)的物理 .stk,因此 URL 授權(quán)用于控制對(duì)虛擬資源的訪(fǎng)問(wèn)。
文件授權(quán)的執(zhí)行依據(jù)的始終是由 IIS 提供的經(jīng)過(guò)身份驗(yàn)證的帳戶(hù)。如果允許匿名訪(fǎng)問(wèn),則該帳戶(hù)是經(jīng)過(guò)配置的匿名帳戶(hù)。否則,它使用 NT 帳戶(hù)。這與 ASP 的工作方式完全相同。
在“資源管理器”屬性頁(yè)中使用“安全”選項(xiàng)卡為給定的文件或目錄設(shè)置文件 ACL.URL 授權(quán)被配置為 ASP.NET 框架應(yīng)用程序的一部分,并在授權(quán)用戶(hù)和角色中有完整的描述。
若要激活 ASP.NET身份驗(yàn)證服務(wù),必須在應(yīng)用程序的配置文件中配置 <authentication> 元素。該元素可具有下表中列出的任何值。
Value 說(shuō)明
沒(méi)有 ASP.NET身份驗(yàn)證服務(wù)是活動(dòng)的。注意,IIS 身份驗(yàn)證服務(wù)仍可以存在。
Windows ASP.NET身份驗(yàn)證服務(wù)將 WindowsPrincipal (System.Security.Principal.WindowsPrincipal) 附加到當(dāng)前請(qǐng)求以啟用對(duì) NT 用戶(hù)或組的授權(quán)。
窗體 ASP.NET身份驗(yàn)證服務(wù)管理 Cookie 并將未經(jīng)身份驗(yàn)證的用戶(hù)重定向到登錄頁(yè)。它通常與 IIS 選項(xiàng)一起使用以允許匿名訪(fǎng)問(wèn)應(yīng)用程序。
護(hù)照 ASP.NET身份驗(yàn)證服務(wù)為護(hù)照 SDK(必須安裝在計(jì)算機(jī)上)提供的服務(wù)提供了一個(gè)方便的包裝。
例如,下列配置文件為應(yīng)用程序啟用基于窗體 (Cookie) 的身份驗(yàn)證:
- <configuration>
- <system.web>
- <authentication mode="Forms"/>
- </system.web>
- </configuration>
【編輯推薦】