共用方式為


安全性授權授權 <>

概觀

元素 <authorization> 可讓您設定可存取網站或應用程式的使用者帳戶。 搭配驗證使用授權來保護伺服器上內容的存取。 驗證會確認使用者的身分識別,而授權會決定使用者可以或無法存取的資源。

IIS 定義兩種類型的授權規則:允許規則和拒絕規則:

  • 允許規則可讓您定義可存取月臺、應用程式或伺服器上所有網站的使用者帳戶或使用者群組。
  • 拒絕規則可讓您定義無法存取月臺、應用程式或伺服器上所有網站的使用者帳戶或使用者群組。

相容性

版本 備註
IIS 10.0 <authorization> IIS 10.0 中未修改專案。
IIS 8.5 <authorization> 在 IIS 8.5 中修改專案。
IIS 8.0 在 IIS 8.0 中未修改專案 <authorization>
IIS 7.5 <authorization> 在 IIS 7.5 中修改專案。
IIS 7.0 專案 <authorization> 是在 IIS 7.0 中引進的。
IIS 6.0 集合 <authorization> 會取代 IIS 6.0 AzEnableAzStoreName、AzScopeNameAzImpersonationLevel 中繼基底屬性。

安裝程式

若要在 Web 服務器上支援及設定月臺和應用程式的授權,您必須安裝 URL 授權模組。 若要這樣做,請使用下列步驟。

Windows Server 2012 或 Windows Server 2012 R2

  1. 在工作列上,按一下 [伺服器管理員]。 - 在伺服器管理員中,按一下 [管理] 功能表,然後按一下 [新增角色和功能]。 - 在 [ 新增角色和功能 精靈] 中,按 [下一步]。 選取安裝類型,然後按 [ 下一步]。 選取目的地伺服器,然後按 [ 下一步]。 - 在 [ 伺服器角色] 頁面上,依序展開 [Web 服務器] ([IIS) ]、[ 網頁伺服器]、[ 安全性],然後選取 [ URL 授權]。 按一下 [下一步] 。
    已醒目提示 U R L 授權展開的 [Web 服務器與安全性] 窗格影像。 . - 在 [ 選取功能 ] 頁面上,按 [下一步]。 - 在 [ 確認安裝選取專案] 頁面上,按一下 [ 安裝]。 - 在 [ 結果] 頁面上,按一下 [ 關閉]。

Windows 8 或Windows 8.1

  1. 在 [開始] 畫面上,將指標全部移至左下角,以滑鼠右鍵按一下 [開始] 按鈕,然後按一下[主控台]。 - 在主控台中,按一下 [程式和功能],然後按一下 [開啟或關閉 Windows 功能]。 - 展開 [網際網路資訊服務]、[ 萬維網服務]、[ 安全性],然後選取 [ URL 授權]。
    已展開 [萬維網服務和安全性] 窗格的影像,並選取 [U R L 授權]。- 按一下 [確定]。
  2. 按一下 [關閉] 。

Windows Server 2008 或 Windows Server 2008 R2

  1. 在工作列上,按一下 [開始],指向 [系統管理工具],然後按一下[伺服器管理員]。 - 在[伺服器管理員階層] 窗格中,展開 [角色],然後按一下 [Web 服務器] (IIS) 。 - 在 [Web 服務器 (IIS) ] 窗格中,捲動至 [ 角色服務 ] 區段,然後按一下 [ 新增角色服務]。 - 在 [新增角色服務精靈] 的 [選取角色服務] 頁面上,選取[URL 授權],然後按 [下一步]。
    [新增角色服務精靈] 的 [選取角色服務] 頁面中展開 [安全性] 窗格的螢幕擷取畫面,其中已選取 U R L 授權。- 在 [ 確認安裝選取專案] 頁面上,按一下 [ 安裝]。 - 在 [ 結果] 頁面上,按一下 [ 關閉]。

Windows Vista 或 Windows 7

  1. 在工作列上,按一下 [開始],然後按一下[主控台]。 - 在主控台中,按一下 [程式和功能],然後按一下 [開啟或關閉 Windows 功能]。 - 展開 [Internet Information Services],然後選取 [URL 授權],然後按一下 [ 確定]。
    已展開 [Internet Information Services] 窗格的影像,並選取 [U R L 授權]。

作法

如何新增授權規則

  1. (IIS) 管理員開啟 Internet Information Services

    • 如果您使用 Windows Server 2012 或 Windows Server 2012 R2:

      • 在工作列上,依序按一下 [伺服器管理員]、[工具],然後按一下 [Internet Information Services] ([IIS) 管理員]。
    • 如果您使用 Windows 8 或 Windows 8.1:

      • 按住Windows鍵,按字母X,然後按一下[主控台]。
      • 按一下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
    • 如果您使用 Windows Server 2008 或 Windows Server 2008 R2:

      • 在工作列上,按一下 [ 開始],指向 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
    • 如果您使用 Windows Vista 或 Windows 7:

      • 在工作列上,按一下 [開始],然後按一下[主控台]。
      • 按兩下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
  2. 在 [ 連線 ] 窗格中,展開伺服器名稱、[ 台],然後流覽至您要設定授權的網站或應用程式。

  3. 在 [ 首頁] 窗格中,按兩下 [授權規則]。
    [首頁] 窗格的影像,其中已醒目提示 [授權規則]。

  4. 若要新增授權規則,請在 [動作] 窗格中,按一下 [新增允許規則...] 或 [新增拒絕規則...

  5. 套用網站或應用程式所需的授權設定,然後按一下 [ 確定]。 例如:

    • 範例 #1:針對特定 HTTP 動詞的所有使用者新增允許規則:
      針對特定 H T T P 動詞的所有使用者新增 [允許規則] 對話方塊的影像,其中顯示 [將此規則套用至特定動詞] 方塊中輸入的動詞。

    • 範例 #2:為所有 HTTP 動詞的特定使用者新增拒絕規則:
      針對所有 H T T P 動詞的特定使用者新增拒絕授權規則對話方塊的影像。

      注意

      若要編輯或刪除現有的規則,請在 [授權規則] 窗格中選取規則,然後按一下 [動作] 窗格中的 [編輯] 或 [移除]。 如果您按一下 [編輯],會出現一個對話方塊,可讓您編輯規則;此對話方塊類似于 [ 新增允許授權規則 ] 和 [ 新增拒絕授權規則 ] 對話方塊。

組態

您可以在 <authorization> ApplicationHost.config檔案的伺服器層級,或在適當Web.config檔案的月臺或應用層級設定 專案。

您可以在伺服器層級設定授權規則,以設定整個伺服器的預設授權規則。 您可以為網站或應用程式設定更特定的規則,以移除、清除或覆寫這些規則。

屬性

屬性 描述
bypassLoginPages 選擇性的 Boolean 屬性。

指定是否要略過指定為表單驗證登入頁面之頁面的授權檢查。 這可讓未經驗證的使用者存取登入頁面以登入。

預設值是 true

子元素

元素 描述
add 選擇性項目。

將授權規則新增至授權規則的集合。
remove 選擇性項目。

移除授權規則集合的授權規則參考。
clear 選擇性項目。

從授權規則集合中移除授權規則的所有參考。

組態範例

下列組態範例包含在Web.config檔案中時,會移除預設的 IIS 授權設定,讓所有使用者都能存取網站或應用程式內容。 然後,它會設定授權規則,只允許具有系統管理員許可權的使用者存取內容。

<configuration>
   <system.webServer>
      <security>
         <authorization>
            <remove users="*" roles="" verbs="" />
            <add accessType="Allow" users="" roles="Administrators" />
         </authorization>
      </security>
   </system.webServer>
</configuration>

範例程式碼

下列範例會新增允許授權規則,以允許系統管理員群組中的使用者存取名為 Contoso 的網站。

AppCmd.exe

appcmd.exe set config "Contoso" -section:system.webServer/security/authorization /+"[accessType='Allow',roles='administrators']"

注意

您可以使用 AppCmd.exe 設定這些設定時,選擇性地將 認可 參數 apphost 設定為 。 這會將組態設定認可至ApplicationHost.config檔案中的適當位置區段,而不是Web.config檔案。

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetWebConfiguration("Contoso");
         ConfigurationSection authorizationSection = config.GetSection("system.webServer/security/authorization");
         ConfigurationElementCollection authorizationCollection = authorizationSection.GetCollection();

         ConfigurationElement addElement = authorizationCollection.CreateElement("add");
         addElement["accessType"] = @"Allow";
         addElement["roles"] = @"administrators";
         authorizationCollection.Add(addElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetWebConfiguration("Contoso")
      Dim authorizationSection As ConfigurationSection = config.GetSection("system.webServer/security/authorization")
      Dim authorizationCollection As ConfigurationElementCollection = authorizationSection.GetCollection
      Dim addElement As ConfigurationElement = authorizationCollection.CreateElement("add")
      addElement("accessType") = "Allow"
      addElement("roles") = "administrators"
      authorizationCollection.Add(addElement)
      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso";
var authorizationSection = adminManager.GetAdminSection("system.webServer/security/authorization", "MACHINE/WEBROOT/APPHOST/Contoso");
var authorizationCollection = authorizationSection.Collection;

var addElement = authorizationCollection.CreateNewElement("add");
addElement.Properties.Item("accessType").Value = "Allow";
addElement.Properties.Item("roles").Value = "administrators";
authorizationCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso"
Set authorizationSection = adminManager.GetAdminSection("system.webServer/security/authorization", "MACHINE/WEBROOT/APPHOST/Contoso")
Set authorizationCollection = authorizationSection.Collection

Set addElement = authorizationCollection.CreateNewElement("add")
addElement.Properties.Item("accessType").Value = "Allow"
addElement.Properties.Item("roles").Value = "administrators"
authorizationCollection.AddElement(addElement)

adminManager.CommitChanges()