Namensformate für eindeutige SPNs

Ein SPN muss in der Gesamtstruktur eindeutig sein, in der er registriert ist. Wenn es nicht eindeutig ist, schlägt die Authentifizierung fehl. Die SPN-Syntax besteht aus vier Elementen: zwei erforderliche Elemente und zwei zusätzlichen Elementen, die Sie bei Bedarf verwenden können, um einen eindeutigen Namen zu erzeugen, wie in der folgenden Tabelle aufgeführt.

<service class>/<host>:<port>/<service name>
Element BESCHREIBUNG
"<service class>" Eine Zeichenfolge, die die allgemeine Dienstklasse identifiziert; beispiel: "SqlServer". Es gibt bekannte Dienstklassennamen, z. B. "www" für einen Webdienst oder "ldap" für einen Verzeichnisdienst. Im Allgemeinen kann dies eine beliebige Zeichenfolge sein, die für die Dienstklasse eindeutig ist. Beachten Sie, dass die SPN-Syntax einen Schrägstrich (/) verwendet, um Elemente zu trennen, sodass dieses Zeichen nicht in einem Dienstklassennamen angezeigt werden kann.
"<Host>" Der Name des Computers, auf dem der Dienst ausgeführt wird. Dies kann ein vollqualifizierter DNS-Name oder ein NetBIOS-Name sein. Beachten Sie, dass NetBIOS-Namen innerhalb einer Gesamtstruktur nicht unbedingt eindeutig sind. Folglich ist ein SPN, der einen NetBIOS-Namen enthält, möglicherweise auch nicht eindeutig.
"<Port>" Eine optionale Portnummer, um zwischen mehreren Instanzen derselben Dienstklasse auf einem einzelnen Hostcomputer zu unterscheiden. Lassen Sie diese Komponente aus, wenn der Dienst den Standardport für seine Dienstklasse verwendet.
"<Dienstname>" Ein optionaler Name, der in den SPNs eines replizierbaren Diensts verwendet wird, um die Daten oder Dienste zu identifizieren, die vom Dienst oder der Vom Dienst bereitgestellten Domäne bereitgestellt werden. Diese Komponente kann eines der folgenden Formate haben:
  • Der distinguished Name oder objectGUID eines Objekts in Active Directory Domain Services, z. B. ein Dienstverbindungspunkt (Service Connection Point, SCP).
  • Der DNS-Name der Domäne für einen Dienst, der einen angegebenen Dienst für eine Domäne als Ganzes bereitstellt.
  • Der DNS-Name eines SRV- oder MX-Eintrags.

 

Die in den SPNs eines Diensts vorhandenen Komponenten hängen davon ab, wie der Dienst identifiziert und repliziert wird. Es gibt zwei grundlegende Szenarien: hostbasierte Dienste und replizierbare Dienste.

Hostbasierte Dienste

Bei einem hostbasierten Dienst wird die Komponente "<Dienstname>" weggelassen, da der Dienst durch die Dienstklasse und den Namen des Hostcomputers, auf dem der Dienst installiert ist, eindeutig identifiziert wird.

<service class>/<host>

Die Dienstklasse allein reicht aus, um für Clients die Features zu identifizieren, die der Dienst bereitstellt. Sie können Instanzen der Dienstklasse auf vielen Computern installieren, und jede instance stellt Dienste bereit, die mit ihrem Hostcomputer identifiziert werden. FTP und Telnet sind Beispiele für hostbasierte Dienste. Die SPNs eines hostbasierten Diensts instance können die Portnummer enthalten, wenn der Dienst einen nicht standardmäßigen Port verwendet oder mehrere Instanzen des Diensts auf dem Host vorhanden sind.

<service class>/<host>:<port>

Replizierbare Dienste

Für einen replizierbaren Dienst kann es eine oder mehrere Instanzen des Diensts (Replikate) geben, und Clients unterscheiden nicht, mit welchem Replikat sie eine Verbindung herstellen, da jede denselben Dienst bereitstellt. Die SPNs für jedes Replikat verfügen über die gleichen Komponenten "<Dienstklasse>" und "<Dienstname>", wobei "<Dienstname>" genauer die vom Dienst bereitgestellten Features identifiziert. Nur die Komponenten "<Host>" und optionaler "<Port>" variieren von SPN zu SPN.

<service class>/<host>:<port>/<service name>

Ein Beispiel für einen replizierbaren Dienst wäre ein instance eines Datenbankdiensts, der Zugriff auf eine angegebene Datenbank ermöglicht. In diesem Fall identifiziert "<Dienstklasse>" die Datenbankanwendung und "<Dienstname>" die spezifische Datenbank. "<Dienstname>" kann der distinguished Name eines Dienstverbindungspunkts (Service Connection Point, SCP) sein, der Verbindungsdaten für die Datenbank enthält.

MyDBService/host1.example.com/CN=hrdb,OU=mktg,DC=example,DC=com
MyDBService/host2.example.com/CN=hrdb,OU=mktg,DC=example,DC=com
MyDBService/host3.example.com/CN=hrdb,OU=mktg,DC=example,DC=com

Wenn Clients den NetBIOS-Namen verwenden, um den SPN eines Diensts zu verfassen, muss jedes Replikat auch einen SPN registrieren, der den NetBIOS-Namen enthält.

MyDBService/host1/CN=hrdb,OU=mktg,DC=example,DC=com
MyDBService/host2/CN=hrdb,OU=mktg,DC=example,DC=com
MyDBService/host3/CN=hrdb,OU=mktg,DC=example,DC=com

Ein weiteres Beispiel für einen replizierbaren Dienst ist ein Dienst, der Dienste für eine gesamte Domäne bereitstellt. In diesem Fall ist die Komponente "<Dienstname>" der DNS-Name der Domäne, die bereitgestellt wird. Ein Kerberos-KDC ist ein Beispiel für diesen Typ von replizierbarem Dienst.

Beachten Sie, dass das System, wenn sich der DNS-Name eines Computers ändert, das Element "<host>" für alle registrierten SPNs für diesen Host in der Gesamtstruktur aktualisiert.