WebConfig Authorization 節點

授權的目的是確定是否應該授予某個標識對給定資源請求的訪問權限類型。有兩種基本方式來授予對給定資源的訪問權限:

  • 文件授權

文件授權由 FileAuthorizationModule 執行,它在使用 Windows 身份驗證時處於活動狀態。它執行 .aspx .asmx 處理程序文件的訪問控制列表 (ACL) 檢查以確定用戶是否應該具有訪問權限。應用程序可以進一步使用模擬在正在訪問的資源上進行資源檢查。

  • URL 授權

URL 授權由 URLAuthorizationModule 執行,它將用戶和角色映射到 URL 命名空間的塊上。此模塊實現正和負兩種授權斷言。也就是說,對於某些集、用戶或角色,該模塊可用於有選擇地允許或拒絕對 URL 命名空間的任意部分的訪問。

URLAuthorizationModule 在任何時候都是可用的。只需在配置文件的 <authorization> 部分的 <allow> <deny> 元素中放置用戶和/或角色的列表即可。

若要建立訪問特定目錄的條件,則必須將一個包含 <authorization> 部分的配置文件放置在該目錄中。爲該目錄設置的條件也會應用到其子目錄,除非子目錄中的配置文件重寫這些條件。此部分的常規語法如下所示。

<[element] [users] [roles] [verbs]/>

元素是必需的。必須包含 users roles 屬性。可以同時包含二者,但這不是必需的。verbs 屬性是可選的。

允許的元素有 <allow> <deny>,它們分別授予和撤消訪問權限。每個元素支持三個屬性,這些屬性在下面的表中定義。

屬性

說明

roles

標識此元素的目標角色。請求所關聯的 IPrincipal 對象確定角色成員。可以將任意 IPrincipal 對象附加到給定請求的上下文中,這些對象可通過您喜歡的任何方式來確定角色成員。例如,默認的 WindowsPrincipal 類使用 Microsoft Windows NT 組來確定角色成員。

users

標識此元素的目標身份。

verbs

定義操作所要應用到的 HTTP 謂詞,如 GETHEAD POST

還會拒絕匿名用戶。

以下示例向 Kim 和管理角色的成員授予權限,而拒絕 John 和所有匿名用戶:

<authorization>

    <allow users="Kim"/>

    <allow roles="Admins"/>

    <deny users="John"/>

    <deny users="?"/>

</authorization>

用戶和角色都可以通過使用逗號分隔的列表來引用多個實體,如下面的示例所示。

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

注意,域帳戶 (contoso/Jane) 必須同時包括域和用戶名的組合。

除身份名稱外,還有兩種特殊身份,如下表所示。

標識

說明

*

指所有身份

?

指匿名身份

若要允許 John 並拒絕其他任何人,可以構造下面的配置部分。

<authorization>

    <allow users="John"/>

    <deny users="*"/>

</authorization>

下面的示例允許每個人使用 GET,但只有 Kim 可以使用 POST

<authorization>

    <allow verb="GET" users="*"/>

    <allow verb="POST" users="Kim"/>

    <deny verb="POST" users="*"/>

</authorization>

使用下面的試探法應用規則:

  • 位於較低目錄級別的配置文件中包含的規則優先於位於較高目錄級別的規則。系統通過構造一個 URL 的所有規則的合併列表,其中最近(層次結構中距離最近)的規則位於列表頭,來確定哪條規則優先。
  • 給定 URL 的一組合並的規則,系統從列表頭開始,檢查規則直到找到第一個匹配項爲止。注意,ASP.NET 的默認配置包含向所有用戶授權的 <allow users="*"> 元素。如果沒有匹配的規則,則將允許請求,除非另外拒絕。如果找到匹配項並且匹配項是 <deny> 元素,則它將返回 401 狀態代碼。應用程序或站點可以方便地配置位於其站點或應用程序頂層的 <deny users="*"> 元素以防止此行爲。

如果是 <allow> 匹配,則模塊不執行任何操作,允許進一步處理請求。

還有 <location> 標記,您可以使用該標記來指定特定的文件或目錄,由該標記環繞(即在 <location> </location> 標記之間)的那些設置將應用到該文件或目錄。

 
發佈了115 篇原創文章 · 獲贊 11 · 訪問量 84萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章