共用方式為


限制對 ASP.NET 網站的存取

更新:2007 年 11 月

限制對應用程式的存取通常分為兩個主題:驗證,就是應用程式如何識別您的身分;以及授權,就是應用程式如何識別您具備執行什麼工作的使用權限。這個主題會提供 ASP.NET Web 應用程式中之驗證和授權的概觀。如需詳細資訊,請參閱 ASP.NET Web 應用程式安全性

驗證使用者

ASP.NET 應用程式提供幾種用於驗證使用者的不同選項。如果是可由任何人檢視的唯讀應用程式,請使用匿名驗證。若要對應用程式的存取有更多限制,您需要使用某種形式的驗證來識別使用者。在驗證 ASP.NET 應用程式的使用者時,應該考慮使用下列兩種識別 (Identity):用來存取 Windows 資源的應用程式識別,以及用來識別 ASP.NET 之使用者的 ASP.NET 使用者識別。

您的應用程式可以在沒有 ASP.NET 使用者識別的情況下執行,不過一定要有 Windows 應用程式識別。為了協助保護應用程式的安全,應該將應用程式的 Windows 識別限制在所需的資源,例如檔案和資料庫存取。

ASP.NET 應用程式識別

當 ASP.NET 網頁正在執行時,伺服器必須有執行 ASP.NET 程式碼之處理序的安全性內容或識別。這個識別會在使用 Windows 整合式安全性保護資源時使用,例如使用 NTFS 檔案系統或網路資源來保護的檔案。

例如,儲存在應用程式之 App_Code 子目錄中且包含應用程式程式碼的檔案,只需要由 ASP.NET 應用程式識別所讀取,因此,可以限制 App_Code 目錄中之檔案的安全性設定,使 ASP.NET 應用程式識別只具有 Read 權限。另一個 ASP.NET 應用程式之 Windows 識別的常見用途,是做為使用整合式安全性之 SQL 伺服器連接的識別。如需詳細資訊,請參閱 ASP.NET 所需的存取控制清單 (ACL)HOW TO:使用 Windows 整合式安全性存取 SQL Server

ASP.NET 應用程式的識別是由幾個因素所決定。依照預設,ASP.NET 網頁是以在 Web 伺服器上處理 ASP.NET 網頁之服務的 Windows 識別來執行。在執行 Windows Server 2003 的電腦上,該識別為 ASP.NET 應用程式所屬之應用程式集區的識別 (預設值為 NETWORK SERVICE 帳戶)。在執行 Windows 2000 和 Windows XP Professional 的電腦上,該識別是在安裝 .NET Framework 時所建立的本機 ASPNET 帳戶。您可以視需要將這個識別設定為不同的識別。如需詳細資訊,請參閱設定 ASP.NET 處理序識別

您可以使用 system.web 組態區段的 identity 項目,修改 ASP.NET 網頁用以執行的 Windows 識別。identity 項目可用來指示 ASP.NET 模擬 Windows 使用者 ID (User ID),模擬 Windows 識別表示應用程式的 ASP.NET 網頁會以該 Windows 識別來執行。您可以指定要模擬的使用者名稱和密碼,或者,也可以啟用模擬,ASP.NET 將以下列兩種方法之一執行:由 IIS 所指定的匿名識別,或是由 IIS 所決定之已驗證的瀏覽器識別 (例如,匿名驗證、Windows 整合式 (NTLM) 驗證等等)。如需詳細資訊,請參閱 ASP.NET 模擬

如果您要模擬 Windows 識別,可以執行還原成處理序之原始識別的程式碼,而不使用模擬的使用者 ID。因此,在需要將某個應用程式與其他應用程式分開的環境中,應該在執行 Windows Server 2003 的電腦上使用不同的應用程式集區隔離應用程式,並以唯一的 Windows 識別設定每個應用程式集區。

您可以使用下列範例程式中的 GetCurrent 方法所傳回之 WindowsIdentityName 屬性,輕易地判斷 ASP.NET 網頁正在執行之作業系統執行緒的 Windows 識別。

<%=System.Security.Principal.WindowsIdentity.GetCurrent().Name%>

ASP.NET 使用者

ASP.NET 使用者識別可用來存取 ASP.NET 專用的資源。例如,您可以識別只供特定使用者使用的應用程式部分,而應用程式的其他部分則可供所有使用者使用。

ASP.NET 使用者是由應用程式 Web.config 檔之 system.web 區段的 authentication 項目所決定。您有幾個選項可用於驗證應用程式的 ASP.NET 識別。您可以使用 Windows 使用者名稱,該名稱是由 IIS、ASP.NET 表單驗證、Passport 驗證或自訂驗證配置所決定。您可以使用目前 HttpContextUser 屬性來存取 ASP.NET 識別。如需詳細資訊,請參閱 ASP.NET 驗證

如果您是使用 ASP.NET 表單驗證或自訂驗證方案來提供 ASP.NET 識別,則可以使用 ASP.NET 成員資格,提供使用者資料存放區和使用者管理功能。如需詳細資訊,請參閱使用成員資格管理使用者

授權使用者

授權牽涉到限制使用者只能存取所需要的資源,這包括限制只能存取需要的檔案、資料庫和部分應用程式,還包括使用「程式碼存取安全性」限制對程式碼的存取。

您可以使用 NTFS 存取控制清單和 FileAuthorizationModule,來限制檔案存取。如需詳細資訊,請參閱 ASP.NET 授權ASP.NET 所需的存取控制清單 (ACL)

您可以使用 UrlAuthorizationModule 和 ASP.NET 角色管理,限制對部分應用程式的存取。如需詳細資訊,請參閱 ASP.NET 授權使用角色管理授權

請參閱

概念

執行階段時的 Web 應用程式安全性