ASP.NET 授權

更新:2007 年 11 月

授權會決定是否應將特定資源的存取權授與識別 (Identity)。在 ASP.NET 中,有兩種方式可以授與特定資源的存取權:

  • 檔案授權:檔案授權是由 FileAuthorizationModule 執行。它會檢查 .aspx 或 .asmx 處理常式檔案的存取控制清單 (ACL),以決定使用者是否應具有檔案的存取權。並針對使用者的 Windows 識別 (若已啟用 Windows 驗證) 或 ASP.NET 處理序 (Process) 的 Windows 識別,驗證 ACL 使用權限。如需詳細資訊,請參閱 ASP.NET 模擬

  • URL 授權:URL 授權是由 UrlAuthorizationModule 執行,它會將使用者和角色對應至 ASP.NET 應用程式中的 URL。這個模組可用於選擇性地允許或拒絕特定使用者或角色存取應用程式的任意部分 (通常是目錄)。

使用 URL 授權

您可以使用 URL 授權,依照使用者名稱或角色,明確地允許或拒絕存取特定目錄。若要這麼做,可以在該目錄的組態檔中建立 authorization 區段。若要啟用 URL 授權,則可在組態檔之 authorization 區段的 allowdeny 項目中,指定使用者或角色的清單。除非子目錄中的組態檔已覆寫使用權限,否則針對目錄所建立的使用權限也會套用至它的子目錄。

以下所顯示的為 authorization 區段的語法:

<authorization>
  <[allow|deny] usersrolesverbs />
</authorization>

allow 或 deny 項目為必要項。您必須指定 users 或 roles 屬性 (Attribute)。兩者可以同時包含,但這兩者並非必須的要件。verbs 屬性是選擇性的。

allow 和 deny 項目分別會授與和撤銷存取權。每個項目會支援下表所顯示的屬性:

屬性

說明

users

辨識這個項目的目標識別 (使用者帳戶)。

匿名使用者會使用問號 (?) 來辨識。您可以使用星號 (*) 來指定所有已驗證的使用者。

roles

針對被允許或拒絕存取資源的目前要求,辨識角色 (RolePrincipal 物件)。如需詳細資訊,請參閱使用角色管理授權

verbs

定義動作所套用的 HTTP 動作,如 GET、HEAD 和 POST。預設值為 "*",它會指定所有的動作。

下列範例會將存取權授與 Kim 識別和具備 Admins 角色的成員,並拒絕存取 John 識別 (除非 John 識別已包含在 Admins 角色中) 和所有匿名使用者:

<authorization>
  <allow users="Kim"/>
  <allow roles="Admins"/>
  <deny users="John"/>
  <deny users="?"/>
</authorization>

下列 authorization 區段會顯示如何允許存取 John 識別,以及拒絕存取所有其他使用者:

<authorization>
  <allow users="John"/>
  <deny users="*"/>
</authorization>

您可以使用以逗號分隔的清單,同時對 users 和 roles 屬性指定多個實體,如下例所示:

<allow users="John, Kim, contoso\Jane"/>

請注意,如果您指定網域帳戶名稱,此名稱必須同時包含網域和使用者名稱 (contoso\Jane)。

下列範例會允許所有使用者執行資源的 HTTP GET,但只允許 Kim 識別執行 POST 作業:

<authorization>
  <allow verbs="GET" users="*"/>
  <allow verbs="POST" users="Kim"/>
  <deny verbs="POST" users="*"/> 
</authorization>

套用規則的方式如下:

  • 應用程式層級之組態檔內含的規則優先於繼承的規則。系統會建構一份 URL 所有規則之合併清單以決定規則的優先順序,並將最新的規則 (階層架構中最接近的規則) 放在清單的開頭。

  • 假設應用程式具有一組合併規則,則 ASP.NET 會從清單的開頭開始檢查規則,直到找到相符的第一個規則為止。ASP.NET 的預設組態中包含一個 <allow users="*"> 項目,表示授權所有的使用者 (根據預設,這個規則會最後套用)。如果沒有其他授權規則相符,則會允許此要求。如果找到相符的規則,且該規則為 deny 項目,則會以 401 HTTP 狀態碼傳回要求。如果 allow 項目相符,模組會允許進一步處理的要求。

在組態檔中,您也可以建立 location 項目以指定特定的檔案或目錄,而該 location 項目中的設定應該要套用至指定的檔案或目錄。

請參閱

概念

設定特定的檔案和子目錄

ASP.NET 模擬

參考

FileAuthorizationModule

UrlAuthorizationModule

IPrincipal

其他資源

ASP.NET Web 應用程式安全性