Condividi tramite


Nome <entità servizio spn>

Panoramica

L'elemento <spn> aggiunge un nome dell'entità servizio (SPN) all'insieme di SPN. Ogni SPN specifica un endpoint univoco per l'attività client usando le funzionalità di protezione estese per autenticazione di Windows.

La protezione estesa migliora le funzionalità di autenticazione di Windows esistenti per mitigare gli attacchi di inoltro di autenticazione o "man in mezzo". Questa mitigazione viene eseguita usando le informazioni di sicurezza implementate tramite due meccanismi di sicurezza:

  • Informazioni di associazione di canale specificate tramite un token di associazione di canale (CBT), che viene usato principalmente per le connessioni SSL.
  • Informazioni di associazione del servizio specificate tramite un nome dell'entità servizio (SPN), che viene usato principalmente per le connessioni che non usano SSL o quando viene stabilita una connessione tramite uno scenario che fornisce l'offload SSL, ad esempio un server proxy o un servizio di bilanciamento del carico.

L'elemento <extendedProtection> può contenere una raccolta di elementi, ognuno dei quali contiene un SPN univoco per le informazioni sull'associazione <spn> del servizio. Ogni SPN rappresenta un endpoint univoco nel percorso di connessione, che può essere un nome di dominio completo (FQDN) o un nome NetBIOS del server di destinazione o di un server proxy. Ad esempio, se un client si connette a un server di destinazione tramite un server proxy, l'insieme SPN nel server di destinazione deve contenere il nome SPN per il server proxy. Ogni SPN nella raccolta deve essere preceduto da "HTTP", quindi il nome SPN risultante per "www.contoso.com" sarà "HTTP/www.contoso.com".

Esistono due attributi dell'elemento che configurano l'associazione <extendedProtection> del canale e un comportamento aggiuntivo per la protezione estesa iis:

  • L'attributo tokenChecking configura il comportamento per il controllo dei token di associazione del canale. I valori possibili per questo attributo sono:

    Nome Descrizione
    None Questo valore specifica che IIS non eseguirà il controllo dei token di associazione del canale. Questa impostazione emula il comportamento esistente prima della protezione estesa.

    Il valore numerico è 0.
    Allow Questo valore specifica che il controllo dei token di associazione del canale è abilitato, ma non obbligatorio. Questa impostazione consente la comunicazione sicura con i client che supportano la protezione estesa, ma supporta comunque i client che non sono in grado di usare la protezione estesa.

    Il valore numerico è 1.
    Require Questo valore specifica che è necessario il controllo del token di associazione del canale. Questa impostazione non fornisce supporto per i client che non supportano la protezione estesa.

    Il valore numerico è 2.
  • L'attributo flag configura un comportamento aggiuntivo per la protezione estesa. I flag possibili sono:

    Nome Descrizione
    None Questo flag specifica che non è abilitato alcun comportamento aggiuntivo per la protezione estesa. Ad esempio, non viene usato alcun server proxy e il controllo SPN è abilitato e richiede FQDN.

    Il valore numerico è 0.
    Proxy Questo flag specifica che parte del percorso di comunicazione sarà tramite un proxy o che il client si connette direttamente al server di destinazione tramite HTTP.

    Il valore numerico è 1.
    NoServiceNameCheck Questo flag specifica che il controllo SPN è disabilitato; questo flag non deve essere usato negli scenari in cui vengono controllati solo gli SPN.

    Il valore numerico è 2.
    AllowDotlessSpn Questo flag specifica che gli SPN non devono essere FQDN. L'impostazione di questo flag consente agli SPN basati su NetBIOS. Nota: L'impostazione di questo flag non è uno scenario sicuro; i nomi basati su FQDN non sono vulnerabili agli attacchi di avvelenamento della risoluzione dei nomi.

    Il valore numerico è 4.
    ProxyCohosting Questo flag specifica che l'intero percorso di comunicazione da client a server userà solo HTTP; nessuna parte del percorso di comunicazione userà SSL e verrà usato il controllo SPN. Nota: Quando si specifica questo flag, è necessario specificare anche il Proxy flag.

    Il valore numerico è 32.

Scenari di protezione estesa

Si considerino gli scenari di esempio seguenti:

  • In ognuno degli scenari seguenti è anche possibile specificare il flag se l'ambiente AllowDotlessSpn di rete supporta gli SPN basati su NetBIOS. Tuttavia, gli SPN basati su NetBIOS non sono sicuri.
  • Per ognuno degli scenari seguenti in cui verrà usato il controllo SPN e il controllo dei token di associazione del canale non verrà usato, non è consigliabile specificare il NoServiceNameCheck flag.
Scenario Flags Descrizione
Il client si connette direttamente al server di destinazione usando HTTP Proxy, ProxyCohosting Il controllo SPN verrà usato e il controllo dei token di associazione del canale non verrà usato.
Il client si connette direttamente al server di destinazione usando SSL None Il controllo del token di associazione del canale viene usato e il controllo SPN non viene usato.
Il client si connette al server di destinazione tramite un server proxy usando HTTP per l'intero percorso Proxy, ProxyCohosting Il controllo SPN verrà usato e il controllo dei token di associazione del canale non verrà usato.
Il client si connette al server di destinazione tramite un server proxy usando SSL per l'intero percorso Proxy Il controllo SPN verrà usato e il controllo dei token di associazione del canale non verrà usato.
Il client si connette al server proxy usando SSL e server proxy si connette al server di destinazione usando HTTP (off-load SSL) Proxy Il controllo SPN verrà usato e il controllo dei token di associazione del canale non verrà usato.

Informazioni aggiuntive

Altre informazioni sulla protezione estesa sono disponibili nell'argomento seguente:

Integrated Windows Authentication with Extended Protection

Nomi entità servizio

Compatibilità

Versione Note
IIS 10.0 L'elemento <spn> non è stato modificato in IIS 10.0.
IIS 8,5 L'elemento <spn> non è stato modificato in IIS 8.5.
IIS 8,0 L'elemento <spn> non è stato modificato in IIS 8.0.
IIS 7,5 L'elemento <spn> dell'elemento <extendedProtection> è stato introdotto in IIS 7.5.
IIS 7.0 N/D
IIS 6.0 N/D

Installazione

L'installazione predefinita di IIS 7 e versioni successive non include il servizio ruolo autenticazione di Windows. Per usare autenticazione di Windows in IIS, è necessario installare il servizio ruolo, disabilitare l'autenticazione anonima per il sito Web o l'applicazione e quindi abilitare autenticazione di Windows per il sito o l'applicazione.

Nota

Dopo aver installato il servizio ruolo, IIS 7 esegue il commit delle impostazioni di configurazione seguenti nel file di ApplicationHost.config.

<windowsAuthentication enabled="false" />

Windows Server 2012 o Windows Server 2012 R2

  1. Sulla barra delle applicazioni fare clic su Server Manager.
  2. In Server Manager fare clic sul menu Gestisci e quindi su Aggiungi ruoli e funzionalità.
  3. Nella procedura guidata Aggiungi ruoli e funzionalità fare clic su Avanti. Selezionare il tipo di installazione e fare clic su Avanti. Selezionare il server di destinazione e fare clic su Avanti.
  4. Nella pagina Ruoliserver espandere Server Web (IIS), espandere Server Web, espandere Sicurezza e quindi selezionare Autenticazione di Windows. Fare clic su Avanti.
    Screenshot che mostra il riquadro Server Web e Sicurezza espanso con l'opzione Autenticazione di Windows selezionata. .
  5. Nella pagina Selezione funzionalità fare clic su Avanti.
  6. Nella pagina Conferma selezioni per l'installazione fare clic su Installa.
  7. Nella pagina Risultati fare clic su Chiudi.

Windows 8 o Windows 8.1

  1. Nella schermata Start spostare il puntatore fino all'angolo inferiore sinistro, fare clic con il pulsante destro del mouse sul pulsante Start e quindi scegliere Pannello di controllo.
  2. In Pannello di controllo fare clic su Programmi e funzionalità e quindi su Attiva o disattiva funzionalità di Windows.
  3. Espandere Internet Information Services, servizi Web a livello globale, sicurezza, quindi selezionare Autenticazione di Windows.
    Screenshot del nodo World Wide Web Services and Security espanso. Autenticazione di Windows evidenziata.
  4. Fare clic su OK.
  5. Fare clic su Close.

Windows Server 2008 o Windows Server 2008 R2

  1. Sulla barra delle applicazioni fare clic su Start, scegliere Strumenti di amministrazione, quindi fare clic su Server Manager.
  2. Nel riquadro della gerarchia Server Manager espandere Ruoli, quindi fare clic su Server Web (IIS).
  3. Nel riquadro Server Web (IIS) scorrere fino alla sezione Servizi ruolo e quindi fare clic su Aggiungi servizi ruolo.
  4. Nella pagina Selezione servizi ruolo della Procedura guidata Aggiungi servizi ruolo selezionare Autenticazione di Windows e quindi fare clic su Avanti.
    Screenshot che mostra la pagina Seleziona servizi ruolo della Procedura guidata Aggiungi servizi ruolo con il riquadro Sicurezza espanso e l'opzione Autenticazione di Windows selezionata.
  5. Nella pagina Conferma selezioni per l'installazione fare clic su Installa.
  6. Nella pagina Risultati fare clic su Chiudi.

Windows Vista o Windows 7

  1. Sulla barra delle applicazioni fare clic su Start e quindi su Pannello di controllo.
  2. In Pannello di controllo fare clic su Programmi e funzionalità e quindi su Attiva o disattiva funzionalità di Windows.
  3. Espandere Internet Information Services, quindi Servizi Web a livello mondiale, quindi Sicurezza.
  4. Selezionare Autenticazione di Windows e quindi fare clic su OK.
    Screenshot del riquadro Servizi Web e sicurezza globale espanso con l'autenticazione di Windows evidenziata.

Procedure

Come abilitare la protezione estesa per autenticazione di Windows

  1. Aprire Gestione Internet Information Services (IIS):

    • Se si usa Windows Server 2012 o Windows Server 2012 R2:

      • Sulla barra delle applicazioni fare clic su Server Manager, scegliere Strumenti, quindi fare clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows 8 o Windows 8.1:

      • Tenere premuto il tasto Windows, premere la lettera X e quindi fare clic su Pannello di controllo.
      • Fare clic su Strumenti di amministrazione, quindi fare doppio clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows Server 2008 o Windows Server 2008 R2:

      • Sulla barra delle applicazioni fare clic su Start, scegliere Strumenti di amministrazione, quindi fare clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows Vista o Windows 7:

      • Sulla barra delle applicazioni fare clic su Start e quindi su Pannello di controllo.
      • Fare doppio clic su Strumenti di amministrazione, quindi fare doppio clic su Gestione Internet Information Services (IIS).
  2. Nel riquadro Connessioni espandere il nome del server, espandere Siti, quindi il sito, l'applicazione o il servizio Web per cui si vuole abilitare la protezione estesa per autenticazione di Windows.

  3. Scorrere fino alla sezione Sicurezza nel riquadro Home e quindi fare doppio clic su Autenticazione.

  4. Nel riquadro Autenticazione selezionare Autenticazione di Windows.

  5. Fare clic su Abilita nel riquadro Azioni .
    Screenshot che mostra il riquadro Autenticazione con l'opzione Autenticazione di Windows selezionata. L'opzione Abilita viene visualizzata nel riquadro Azioni.

  6. Fare clic su Impostazioni avanzate nel riquadro Azioni .

  7. Quando viene visualizzata la finestra di dialogo Impostazioni avanzate , selezionare una delle opzioni seguenti nel menu a discesa Protezione estesa :

    • Selezionare Accetta se si vuole abilitare la protezione estesa fornendo supporto di livello inferiore per i client che non supportano la protezione estesa.
    • Selezionare Obbligatorio se si vuole abilitare la protezione estesa senza fornire supporto di livello inferiore.
      Screenshot della finestra di dialogo Impostazioni avanzate che mostra l'opzione Accetta selezionata dal menu a discesa Protezione estesa.
  8. Fare clic su OK per chiudere la finestra di dialogo Impostazioni avanzate .

Configurazione

L'elemento <spn> dell'elemento <extendedProtection> è configurabile a livello di sito, applicazione o directory virtuale nel file ApplicationHost.config.

Attributi

Attributo Descrizione
name Attributo stringa facoltativo.

Specifica un nome SPN univoco.

Non è previsto alcun valore predefinito.

Elementi figlio

Nessuno.

Esempio di configurazione

Nell'esempio seguente viene visualizzato un <extendedProtection> elemento che illustra l'abilitazione di autenticazione di Windows con protezione estesa per il sito Web predefinito e aggiunge due voci SPN alla raccolta di nomi SPN.

<location path="Default Web Site">
   <system.webServer>
      <security>
         <authentication>
            <windowsAuthentication enabled="true">
               <extendedProtection tokenChecking="Allow" flags="None">
                  <spn name="HTTP/www.contoso.com" />
                  <spn name="HTTP/contoso.com" />
               </extendedProtection>
            </windowsAuthentication>
         </authentication>
      </security>
   </system.webServer>
</location>

Codice di esempio

Negli esempi seguenti viene illustrata la configurazione di autenticazione di Windows con protezione estesa per il sito Web predefinito e vengono aggiunte due voci SPN alla raccolta di nomi SPN.

AppCmd.exe

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

appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /extendedProtection.tokenChecking:"Allow" /extendedProtection.flags:"None" /commit:apphost

appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /+"extendedProtection.[name='HTTP/www.contoso.com']" /commit:apphost

appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /+"extendedProtection.[name='HTTP/contoso.com']" /commit:apphost

Nota

È necessario assicurarsi di impostare il parametro commit su apphost quando si usa AppCmd.exe per configurare queste impostazioni. In questo modo le impostazioni di configurazione vengono confermate nella sezione relativa al percorso appropriato nel file 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 windowsAuthenticationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Default Web Site");
         windowsAuthenticationSection["enabled"] = true;

         ConfigurationElement extendedProtectionElement = windowsAuthenticationSection.GetChildElement("extendedProtection");
         extendedProtectionElement["tokenChecking"] = @"Allow";
         extendedProtectionElement["flags"] = @"None";

         ConfigurationElementCollection extendedProtectionCollection = extendedProtectionElement.GetCollection();

         ConfigurationElement spnElement = extendedProtectionCollection.CreateElement("spn");
         spnElement["name"] = @"HTTP/www.contoso.com";
         extendedProtectionCollection.Add(spnElement);

         ConfigurationElement spnElement1 = extendedProtectionCollection.CreateElement("spn");
         spnElement1["name"] = @"HTTP/contoso.com";
         extendedProtectionCollection.Add(spnElement1);

         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 windowsAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Default Web Site")
      windowsAuthenticationSection("enabled") = True

      Dim extendedProtectionElement As ConfigurationElement = windowsAuthenticationSection.GetChildElement("extendedProtection")
      extendedProtectionElement("tokenChecking") = "Allow"
      extendedProtectionElement("flags") = "None"

      Dim extendedProtectionCollection As ConfigurationElementCollection = extendedProtectionElement.GetCollection

      Dim spnElement As ConfigurationElement = extendedProtectionCollection.CreateElement("spn")
      spnElement("name") = "HTTP/www.contoso.com"
      extendedProtectionCollection.Add(spnElement)

      Dim spnElement1 As ConfigurationElement = extendedProtectionCollection.CreateElement("spn")
      spnElement1("name") = "HTTP/contoso.com"
      extendedProtectionCollection.Add(spnElement1)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

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

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

var extendedProtectionElement = windowsAuthenticationSection.ChildElements.Item("extendedProtection");
extendedProtectionElement.Properties.Item("tokenChecking").Value = "Allow";
extendedProtectionElement.Properties.Item("flags").Value = "None";

var extendedProtectionCollection = extendedProtectionElement.Collection;

var spnElement = extendedProtectionCollection.CreateNewElement("spn");
spnElement.Properties.Item("name").Value = "HTTP/www.contoso.com";
extendedProtectionCollection.AddElement(spnElement);

var spnElement1 = extendedProtectionCollection.CreateNewElement("spn");
spnElement1.Properties.Item("name").Value = "HTTP/contoso.com";
extendedProtectionCollection.AddElement(spnElement1);

adminManager.CommitChanges();

VBScript

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

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

Set extendedProtectionElement = windowsAuthenticationSection.ChildElements.Item("extendedProtection")
extendedProtectionElement.Properties.Item("tokenChecking").Value = "Allow"
extendedProtectionElement.Properties.Item("flags").Value = "None"

Set extendedProtectionCollection = extendedProtectionElement.Collection

Set spnElement = extendedProtectionCollection.CreateNewElement("spn")
spnElement.Properties.Item("name").Value = "HTTP/www.contoso.com"
extendedProtectionCollection.AddElement(spnElement)

Set spnElement1 = extendedProtectionCollection.CreateNewElement("spn")
spnElement1.Properties.Item("name").Value = "HTTP/contoso.com"
extendedProtectionCollection.AddElement(spnElement1)

adminManager.CommitChanges()