成員和角色管理器提供者--現在ASP.NET 2.0包含了內建的成員和角色管理服務。由於這些服務都是提供者驅動的(provider-driven),你可以輕易地變更它,或者用自訂實現來代替它。
登入控制項--新的登入控制項為網站的基於認證和授權的UI(例如登入表單、建立使用者表單、密碼取回、已登入使用者或角色的定製UI)提供了基本模組。這些控制項利用ASP.NET 2.0中的內建的成員和角色服務與網站所定義的使用者和角色資訊互動操作。
大多數Web應用程式的一個重要的部分是辨別使用者並控制資源的訪問權。檢測請求的實體(entity)身份的操作就是認證(authentication)。通常,為了進行認證,使用者必須提供憑證,例如帳號/密碼。一旦認證過的身份是有效,就必須檢測該身份是否能夠訪問指定的資源,這個過程就是授權(authorization)。ASP.NET與IIS一起為應用程式提供認證和授權服務。
COM對象的一個重要特性就是,它能夠控制那些運行COM對象代碼的身份。當COM對象用請求的實體身份運行代碼的時候,就稱為模仿(impersonation)。ASP.NET架構組件應用程式可以選擇模仿請求。
有些應用程式還希望根據請求的身份或者根據請求的身份所屬的角色來動態地定製內容。ASP.NET架構組件應用程式可以動態地檢測當前請求的身份是否屬於某種角色。例如,應用程式可能希望檢測目前使用者是否屬於管理員角色,以便為管理員有條件地產生內容。
ASP.NET 2.0的成員特性使你建立和系統管理使用者更加容易了。成員特性一般與另外一個叫做角色管理器的新特性一起運作。角色管理器為建立角色和給角色指定使用者提供了下層結構。當成員、角色管理器特性和表單認證一起工作的時候,ASP.NET 2.0就可以為建立、認證和授權使用者提供端對端的支援。
成員和角色管理器都是用基於提供者的模型設計的。提供者從特性所暴露的類和商務邏輯中提取特性的物理資料存放區。成員和角色管理器特性都帶有Microsoft SQL Server提供者。成員特性還帶有一個用於處理活動目錄和活動目錄應用程式模式(ADAM)的提供者。角色管理器特性帶有一個能利用Windows Server 2003授權管理特性的提供者。你可以建立自訂的提供者,並配置它與成員和角色管理器特性一起使用。使用自訂提供者的時候,利用成員和角色管理器特性的頁面仍然會繼續工作,毫無改變。
登入控制項是一組自訂的伺服器控制項,它為認證和授權事務提供了公用的使用者介面。登入控制項利用了成員、角色管理器和表單認證特性中的功能。
認證和授權
ASP.NET與IIS一起支援使用基本的、Digest和Windows認證。ASP.NET支援微軟Passport認證服務,它支援單點登入服務和使用者佈建服務。ASP.NET還支援一種使用基於表單認證的強大的服務。基於表單的認證使用Cookie來認證使用者,並允許應用程式執行自己的憑證驗證過程。
我們要認識到,ASP.NET認證服務是受到IIS提供的認證服務制約的。例如,為了在IIS應用程式中使用基本認證,你就必須使用Internet服務管理工具來配置應用程式以使用基本認證。
ASP.NET提供了兩種授權服務:
◆檢查ACL(存取控制清單)或資源許可權,看某個認證過的使用者是否能夠訪問該資源。
◆URL授權,它批准一個身份使用一定的Web空間。
為了示範它們的差別,我們來看一個例子,假設某個應用程式允許匿名使用者使用IUSR_MYMACHINE帳號訪問。當某個ASP.NET頁面(例如"/default.aspx")的請求通過認證之後,就會依據該檔案(例如"c:\inetpub\wwwroot\default.aspx")的ACL進行檢查,看IUSR_MYMACHINE帳號是否有許可權讀取這個檔案。如果有許可權,就對訪問進行授權。如果Web內容位於NTFS卷中,並且已經配置了虛擬目錄使用Windows認證,檔案的授權就會自動地執行。