共用方式為


安全性驗證驗證 <>

概觀

驗證是用來驗證網站或 Web 應用程式訪客身分識別的機制。 一般而言,您會將使用者名稱和密碼指派給訪客,或允許訪客匿名存取網站上的公用內容來執行此動作。

雖然您使用驗證來確認訪客的身分識別,但您會使用授權來控制訪客對網站或應用程式不同區域的存取權。

IIS 7 支援匿名驗證、基本驗證、用戶端憑證對應驗證、摘要式驗證、IIS 用戶端憑證對應驗證,以及Windows 驗證。 協力廠商驗證模組可以提供其他驗證模式。

安裝其中一個驗證模組之後,您必須為想要使用它的網站、Web 應用程式或 Web 服務啟用選取的驗證模組。

此外,IIS 7 預設會針對使用 Kerberos 或 NTLM) 驗證配置的 Windows (啟用核心模式驗證。 核心模式驗證提供下列優點:

  • 您的 Web 應用程式可以使用較低許可權的帳戶來執行。
  • 如果您使用 Kerberos 驗證,可以使用與伺服器之服務主體名稱相關聯的預設帳戶 (SPN) 不同的帳戶。
  • 如果您使用核心模式驗證,您可以使用 Windows 驗證 Kerberos 提供者,而不需執行明確的 SPN 設定。

相容性

版本 備註
IIS 10.0 <authentication> IIS 10.0 中未修改專案。
IIS 8.5 <authentication> 在 IIS 8.5 中修改專案。
IIS 8.0 在 IIS 8.0 中未修改專案 <authentication>
IIS 7.5 <authentication> 在 IIS 7.5 中修改專案。
IIS 7.0 專案 <authentication> 是在 IIS 7.0 中引進的。
IIS 6.0 N/A

安裝程式

專案 <authentication> 包含在 IIS 7 的預設安裝中。

作法

如何停用匿名驗證

  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. 在 [ 連線 ] 窗格中,展開 [伺服器名稱]、[ 台],然後移至您要設定的階層窗格中的層級,然後按一下網站或 Web 應用程式。

  3. 捲動至 [首頁] 窗格中的 [安全性] 區段,然後按兩下 [驗證]。

  4. 在 [驗證]窗格中,選取 [匿名驗證],然後按一下 [動作] 窗格中的 [停用]。
    顯示 [驗證] 窗格的螢幕擷取畫面。已啟用並選取匿名驗證。

如何從 IUSR 帳戶變更匿名驗證認證

  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. 在 [ 連線 ] 窗格中,展開伺服器名稱、展開 [站台],然後流覽至您要設定的階層窗格中的層級,然後按一下網站或 Web 應用程式。

  3. 捲動至 [首頁] 窗格中的 [安全性] 區段,然後按兩下 [驗證]。

  4. 在 [驗證]窗格中,選取 [匿名驗證],然後按一下 [動作] 窗格中的 [編輯...]。

  5. 在 [ 編輯匿名驗證認證 ] 對話方塊中,執行下列其中一項動作:

    • 選取 [應用程式集區身分識別 ] 以使用應用程式集區的身分識別集區,然後按一下 [ 確定]。
      顯示 [編輯匿名驗證認證] 對話方塊的螢幕擷取畫面。已選取應用程式集區身分識別。

    • 按一下 [設定...],然後在 [ 設定認證 ] 對話方塊中,在 [ 使用者名稱 ] 方塊中輸入帳戶的使用者名稱,在 [ 密碼 ] 和 [ 確認密碼 ] 方塊中輸入帳戶的密碼,按一下 [ 確定],然後按一下 [ 確定 ]。
      顯示 [設定認證] 對話方塊的螢幕擷取畫面。

      注意

      如果您使用此程式,則只會授與 IIS 伺服器電腦上的新帳戶最低許可權。


如何啟用網站、Web 應用程式或 Web 服務的Windows 驗證

  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. 在 [連線] 窗格中,展開伺服器名稱、[站台],然後展開您要啟用Windows 驗證的網站、應用程式或 Web 服務。

  3. 捲動至 [首頁] 窗格中的 [安全性] 區段,然後按兩下 [驗證]。

  4. 在 [驗證]窗格中,選取 [Windows 驗證],然後按一下 [動作] 窗格中的 [啟用]。
    顯示 [驗證] 窗格的螢幕擷取畫面。Windows 驗證已停用並選取。

組態

<authentication> 段群組定義于 <system.webServer> 組態區段中。 本節群組會針對您可以在伺服器上安裝和啟用的所有使用者驗證類型定義組態區段。 您可以在ApplicationHost.config檔案的伺服器層級,以及Web.config檔案中的應用層級進行設定。

屬性

無。

子元素

元素 描述
anonymousAuthentication 選擇性項目。

指定匿名驗證的設定。
basicAuthentication 選擇性項目。

指定基本驗證的設定。
clientCertificateMappingAuthentication 選擇性項目。

指定使用 Active Directory 的用戶端憑證對應驗證設定。
digestAuthentication 選擇性項目。

指定摘要式驗證的設定。
iisClientCertificateMappingAuthentication 選擇性項目。

指定使用 IIS 進行用戶端憑證對應驗證的設定。
windowsAuthentication 選擇性項目。

指定Windows 驗證的設定。

組態範例

下列組態範例會停用名為 Contoso 之網站的匿名驗證,然後為月臺啟用基本驗證和Windows 驗證。

<location path="Contoso">
   <system.webServer>
      <security>
         <authentication>
            <anonymousAuthentication enabled="false" />
            <basicAuthentication enabled="true" defaultLogonDomain="Contoso" />
            <windowsAuthentication enabled="true" />
          </authentication>
      </security>
   </system.webServer>
</location>

範例程式碼

下列範例會停用名為 Contoso 之網站的匿名驗證,然後為網站啟用基本驗證和Windows 驗證。

AppCmd.exe

appcmd.exe set config "Contoso" -section:system.webServer/security/authentication/anonymousAuthentication /enabled:"False" /commit:apphost

appcmd.exe set config "Contoso" -section:system.webServer/security/authentication/basicAuthentication /enabled:"True" /commit:apphost

appcmd.exe set config "Contoso" -section:system.webServer/security/authentication/windowsAuthentication /enabled:"True" /commit:apphost

注意

當您使用 AppCmd.exe 來設定這些設定時,請務必將 認可 參數 apphost 設定為 。 這會將組態設定認可至ApplicationHost.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.GetApplicationHostConfiguration();

         ConfigurationSection anonymousAuthenticationSection = config.GetSection("system.webServer/security/authentication/anonymousAuthentication", "Contoso");
         anonymousAuthenticationSection["enabled"] = false;

         ConfigurationSection basicAuthenticationSection = config.GetSection("system.webServer/security/authentication/basicAuthentication", "Contoso");
         basicAuthenticationSection["enabled"] = true;

         ConfigurationSection windowsAuthenticationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Contoso");
         windowsAuthenticationSection["enabled"] = true;

         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.GetApplicationHostConfiguration

      Dim anonymousAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/anonymousAuthentication", "Contoso")
      anonymousAuthenticationSection("enabled") = False

      Dim basicAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/basicAuthentication", "Contoso")
      basicAuthenticationSection("enabled") = True

      Dim windowsAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Contoso")
      windowsAuthenticationSection("enabled") = True

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var anonymousAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/anonymousAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso");
anonymousAuthenticationSection.Properties.Item("enabled").Value = false;

var basicAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/basicAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso");
basicAuthenticationSection.Properties.Item("enabled").Value = true;

var windowsAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/windowsAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso");
windowsAuthenticationSection.Properties.Item("enabled").Value = true;

adminManager.CommitChanges();

VBScript

Set adminManager = CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set anonymousAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/anonymousAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso")
anonymousAuthenticationSection.Properties.Item("enabled").Value = False

Set basicAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/basicAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso")
basicAuthenticationSection.Properties.Item("enabled").Value = True

Set windowsAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/windowsAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso")
windowsAuthenticationSection.Properties.Item("enabled").Value = True

adminManager.CommitChanges()