Dienstprinzipalname <spn>

Übersicht

Das <spn>-Element fügt der Auflistung von SPNs einen Dienstprinzipalnamen (Service Principal Name, SPN) hinzu. Jeder SPN gibt einen eindeutigen Endpunkt für Clientaktivitäten mithilfe der erweiterten Schutzfeatures für die Windows-Authentifizierung an.

Erweiterter Schutz verbessert die vorhandene Windows-Authentifizierungsfunktionalität, um Authentifizierungsrelay- oder Man-in-the-middle-Angriffe zu mindern. Diese Entschärfung erfolgt mithilfe von Sicherheitsinformationen, die über zwei Sicherheitsmechanismen implementiert werden:

  • Kanalbindungsinformationen, die über ein Kanalbindungstoken (Channel Binding Token, CBT) angegeben werden, das in erster Linie für SSL-Verbindungen verwendet wird.
  • Dienstbindungsinformationen, die über einen Dienstprinzipalnamen (Service Principal Name, SPN) angegeben werden, der in erster Linie für Verbindungen verwendet wird, die nicht SSL verwenden, oder wenn eine Verbindung über ein Szenario hergestellt wird, das SSL-Offloading bereitstellt, z. B. proxyserver oder Lastenausgleich.

Das <extendedProtection>-Element kann eine Sammlung von <spn>-Elementen enthalten, die jeweils einen eindeutigen SPN für die Dienstbindungsinformationen enthalten. Jeder SPN stellt einen eindeutigen Endpunkt im Verbindungspfad dar, der möglicherweise ein vollqualifizierter Domänenname (Fully Qualified Domain Name, FQDN) oder NetBIOS-Name des Zielservers oder eines Proxyservers sein kann. Wenn beispielsweise ein Client über einen Proxyserver eine Verbindung mit einem Zielserver herstellt, muss die SPN-Auflistung auf dem Zielserver den SPN für den Proxyserver enthalten. Jedem SPN in der Auflistung muss HTTP vorangestellt werden, sodass der resultierende SPN für „www.contoso.com“ „HTTP/www.contoso.com“ lautet.

Es gibt zwei Attribute des <extendedProtection>-Elements, die die Kanalbindung und zusätzliches Verhalten für den erweiterten IIS-Schutz konfigurieren:

  • Das tokenChecking-Attribut konfiguriert das Verhalten für die Überprüfung auf Kanalbindungstoken. Die möglichen Werte für dieses Attribut sind die folgenden:

    Name Beschreibung
    None Dieser Wert gibt an, dass IIS keine Kanalbindungstokenüberprüfung durchführt. Diese Einstellung emuliert das Verhalten, das vor dem erweiterten Schutz vorhanden war.

    Der numerische Wert lautet 0.
    Allow Dieser Wert gibt an, dass die Überprüfung von Kanalbindungstoken aktiviert, aber nicht erforderlich ist. Diese Einstellung ermöglicht eine sichere Kommunikation mit Clients, die erweiterten Schutz unterstützen, aber weiterhin Clients unterstützt, die keinen erweiterten Schutz verwenden können.

    Der numerische Wert lautet 1.
    Require Dieser Wert gibt an, dass die Überprüfung von Kanalbindungstoken erforderlich ist. Diese Einstellung bietet keine Unterstützung für Clients, die keinen erweiterten Schutz unterstützen.

    Der numerische Wert lautet 2.
  • Das flags-Attribut konfiguriert zusätzliches Verhalten für erweiterten Schutz. Die möglichen Flags sind:

    Name Beschreibung
    None Dieses Flag gibt an, dass kein zusätzliches Verhalten für erweiterten Schutz aktiviert ist. (Beispielsweise wird kein Proxyserver verwendet, und die SPN-Überprüfung ist aktiviert und erfordert FQDNs.)

    Der numerische Wert lautet 0.
    Proxy Dieses Flag gibt an, dass ein Teil des Kommunikationspfads über einen Proxy erfolgt oder dass der Client eine direkte Verbindung mit dem Zielserver über HTTP herstellt.

    Der numerische Wert lautet 1.
    NoServiceNameCheck Dieses Flag gibt an, dass die SPN-Überprüfung deaktiviert ist; Dieses Flag sollte nicht in Szenarien verwendet werden, in denen nur SPNs überprüft werden.

    Der numerische Wert lautet 2.
    AllowDotlessSpn Dieses Flag gibt an, dass SPNs nicht als FQDNs erforderlich sind. Durch Festlegen dieses Flags können NetBIOS-basierte SPNs aktiviert werden. Hinweis: Das Festlegen dieses Flags ist kein sicheres Szenario. Nicht-FQDN-basierte Namen sind anfällig für Poisoning-Angriffe bei der Namensauflösung.

    Der numerische Wert lautet 4.
    ProxyCohosting Dieses Flag gibt an, dass der gesamte Client-zu-Server-Kommunikationspfad nur HTTP verwendet. Kein Teil des Kommunikationspfads verwendet SSL, und die SPN-Überprüfung wird verwendet. Hinweis: Wenn Sie dieses Flag angeben, müssen Sie auch das Proxy-Flag angeben.

    Der numerische Wert lautet 32.

Erweiterte Schutzszenarien

Betrachten Sie die folgende Beispielszenarien:

  • In jedem der folgenden Szenarien können Sie auch das AllowDotlessSpn-Flag angeben, wenn Ihre Netzwerkumgebung NetBIOS-basierte SPNs unterstützt. NetBIOS-basierte SPNs sind jedoch nicht sicher.
  • Für jedes der folgenden Szenarien, in denen die SPN-Überprüfung verwendet wird und die Überprüfung von Kanalbindungstoken nicht verwendet wird, sollten Sie das NoServiceNameCheck-Flag nicht angeben.
Szenario Flags Beschreibung
Client stellt eine direkte Verbindung mit dem Zielserver mithilfe von HTTP her Proxy, ProxyCohosting DIE SPN-Überprüfung wird verwendet, und die Überprüfung von Kanalbindungstoken wird nicht verwendet.
Client stellt eine direkte Verbindung mit dem Zielserver mithilfe von SSL her None Die Überprüfung von Kanalbindungstoken wird verwendet, und die SPN-Überprüfung wird nicht verwendet.
Client stellt eine Verbindung mit dem Zielserver über einen Proxyserver mithilfe von HTTP für den gesamten Pfad her. Proxy, ProxyCohosting DIE SPN-Überprüfung wird verwendet, und die Überprüfung von Kanalbindungstoken wird nicht verwendet.
Client stellt eine Verbindung mit dem Zielserver über einen Proxyserver mithilfe von SSL für den gesamten Pfad her. Proxy DIE SPN-Überprüfung wird verwendet, und die Überprüfung von Kanalbindungstoken wird nicht verwendet.
Client stellt eine Verbindung mit dem Proxyserver mithilfe von SSL und Proxyserver mithilfe von HTTP (SSL off-loading) mit dem Zielserver her. Proxy DIE SPN-Überprüfung wird verwendet, und die Überprüfung von Kanalbindungstoken wird nicht verwendet.

Zusätzliche Informationen

Weitere Informationen zum erweiterten Schutz finden Sie im folgenden Thema:

Integrierte Windows-Authentifizierung mit erweitertem Schutz

Dienstprinzipalnamen

Kompatibilität

Version Hinweise
IIS 10.0 Das <spn>-Element wurde in IIS 10.0 nicht geändert.
IIS 8.5 Das <spn>-Element wurde in IIS 8.5 nicht geändert.
IIS 8.0 Das <spn>-Element wurde in IIS 8.0 nicht geändert.
IIS 7.5 Das <spn>-Element des <extendedProtection>-Elements wurde in IIS 7.5 eingeführt.
IIS 7.0 N/V
IIS 6.0 N/V

Setup

Die Standardinstallation von IIS 7 und höher enthält nicht den Windows-Authentifizierungsrollendienst. Um die Windows-Authentifizierung unter IIS zu verwenden, müssen Sie den Rollendienst installieren, die anonyme Authentifizierung für Ihre Website oder Anwendung deaktivieren und dann die Windows-Authentifizierung für die Website oder Anwendung aktivieren.

Hinweis

Nachdem Sie den Rollendienst installiert haben, übernimmt IIS 7 die folgenden Konfigurationseinstellungen in die Datei ApplicationHost.config.

<windowsAuthentication enabled="false" />

Windows Server 2012 oder Windows Server 2012 R2

  1. Klicken Sie auf der Taskleiste auf Server-Manager.
  2. Klicken Sie im Server-Manager auf Verwalten und dann auf Rollen und Features hinzufügen.
  3. Klicken Sie im Assistenten zum Hinzufügen von Rollen und Features auf Weiter. Wählen Sie den Installationstyp aus, und klicken Sie auf Weiter. Wählen Sie den Zielserver aus, und klicken Sie auf Weiter.
  4. Erweitern Sie auf der Seite Serverrollen den Webserver (IIS),erweitern Sie den Webserver, erweitern Sie Sicherheit, und wählen Sie dann Windows-Authentifizierung aus. Klicken Sie auf Weiter.
    Screenshot shows Web Server and Security pane expanded with Windows Authentication selected. .
  5. Klicken Sie auf der Seite Features auswählen auf Weiter.
  6. Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
  7. Klicken Sie auf der Seite Ergebnisse auf Schließen.

Windows 8 oder Windows 8.1

  1. Bewegen Sie auf dem Start-Bildschirm den Mauszeiger ganz nach links unten, klicken Sie mit der rechten Maustaste auf die Start-Taste und klicken Sie dann auf Systemsteuerung.
  2. Klicken Sie in der Systemsteuerung auf Programme und Features, und klicken Sie dann auf Windows-Features aktivieren oder deaktivieren.
  3. Erweitern Sie Internetinformationsdienste, erweitern Sie World Wide Web Services, erweitern Sie Sicherheit, und wählen Sie dann Windows-Authentifizierung aus.
    Screenshot of World Wide Web Services and Security node expanded. Windows Authentication is highlighted.
  4. Klicken Sie auf OK.
  5. Klicken Sie auf Schließen.

Windows Server 2008 oder Windows Server 2008 R2

  1. Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltungstools, und klicken Sie dann auf Server-Manager.
  2. Erweitern Sie im Hierarchiebereich des Server-Managers die Rollen und klicken Sie dann auf den Webserver (IIS).
  3. Scrollen Sie im Bereich Webserver (IIS) zum Abschnitt Rollendienste, und klicken Sie dann auf Rollendienste hinzufügen.
  4. Wählen Sie auf der Seite Rollendienste auswählen des Assistenten Rollendienste hinzufügenWindows-Authentifizierung aus, und klicken Sie dann auf Weiter.
    Screenshot displays Select Role Services page of Add Role Services Wizard with Security pane expanded and Windows Authentication selected.
  5. Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
  6. Klicken Sie auf der Seite Ergebnisse auf Schließen.

Windows Vista oder Windows 7

  1. Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
  2. Klicken Sie in der Systemsteuerung auf Programme und Features, und klicken Sie dann auf Windows-Features aktivieren oder deaktivieren.
  3. Erweitern Sie Internetinformationsdienste, dann World Wide Web Services und schließlich Sicherheit.
  4. Wählen Sie Windows-Authentifizierung aus, und klicken Sie dann auf OK.
    Screenshot of World Wide Web Services and Security pane expanded with Windows Authentication highlighted.

Gewusst wie

So aktivieren Sie erweiterten Schutz für die Windows-Authentifizierung

  1. Öffnen Sie den Internet Information Services (IIS) Manager:

    • Wenn Sie Windows Server 2012 oder Windows Server 2012 R2 verwenden:

      • Klicken Sie in der Taskleiste auf Server-Manager dann auf Tools und dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows 8 oder Windows 8.1 verwenden:

      • Halten Sie die Windows-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf Systemsteuerung.
      • Klicken Sie auf Verwaltung und doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows Server 2008 oder Windows Server 2008 R2 verwenden:

      • Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltung und dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows Vista oder Windows 7 verwenden:

      • Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
      • Doppelklicken Sie auf Verwaltung und doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
  2. Erweitern Sie im Bereich Verbindungen den Servernamen, erweitern Sie Sites und dann die Website, Anwendung oder den Webdienst, für die Sie den erweiterten Schutz für Windows-Authentifizierung aktivieren möchten.

  3. Scrollen Sie zum Abschnitt Sicherheit im Bereich Start, und doppelklicken Sie dann auf Authentifizierung.

  4. Wählen Sie im Bereich Authentifizierung die Option Windows-Authentifizierung aus.

  5. Klicken Sie im Bereich Aktivieren auf Aktionen.
    Screenshot shows Authentication pane with Windows Authentication selected. Enable option is displayed in Actions pane.

  6. Klicken Sie im Bereich Aktionen auf Erweiterte Einstellungen.

  7. Wenn das Dialogfeld Erweiterte Einstellungen angezeigt wird, wählen Sie im Dropdownmenü Erweiterter Schutz eine der folgenden Optionen aus:

    • Wählen Sie Annehmen aus, wenn Sie den erweiterten Schutz aktivieren möchten, während Sie Unterstützung für Clients bereitstellen, die keinen erweiterten Schutz unterstützen.
    • Wählen Sie Erforderlich aus, wenn Sie den erweiterten Schutz aktivieren möchten, ohne Unterstützung auf der Downlevelebene bereitzustellen.
      Screenshot of Advanced Settings dialog box showing Accept option is selected from Extended Protection drop down menu.
  8. Klicken Sie auf OK, um das Dialogfeld Erweiterte Einstellungen zu schließen.

Konfiguration

Das <spn>-Element des <extendedProtection>-Elements kann auf Standort-, Anwendungs- oder virtuelle Verzeichnisebene in der Datei ApplicationHost.config konfiguriert werden.

Attribute

Attribut Beschreibung
name Optionales Zeichenfolgeattribut.

Gibt einen eindeutigen SPN an.

Es ist kein Standardwert vorhanden.

Untergeordnete Elemente

Keine.

Konfigurationsbeispiel

Im folgenden Beispiel wird ein <extendedProtection>-Element angezeigt, das die Aktivierung der Windows-Authentifizierung mit erweitertem Schutz für die Standardwebsite veranschaulicht und der Auflistung von SPNs zwei SPN-Einträge hinzufügt.

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

Beispielcode

Die folgenden Beispiele veranschaulichen das Konfigurieren der Windows-Authentifizierung mit erweitertem Schutz für die Standardwebsite und fügen der Sammlung von SPNs zwei SPN-Einträge hinzu.

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

Hinweis

Sie müssen unbedingt den Commit-Parameter auf apphost festlegen, wenn Sie AppCmd.exe verwenden, um diese Einstellungen zu konfigurieren. Dadurch werden die Konfigurationseinstellungen auf den entsprechenden Speicherortabschnitt in der Datei ApplicationHost.config festgelegt.

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()