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