Teilen über


SPN- und UPN-Eindeutigkeit

Gilt für: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012

Autor: Justin Turner, Senior Support Escalation Engineer bei der Windows-Gruppe

Hinweis

Dieser Inhalt wurde von einem Mitarbeiter des Microsoft-Kundendiensts geschrieben und richtet sich an erfahrene Administratoren und Systemarchitekten, die einen tieferen technischen Einblick in die Funktionen und Lösungen von Windows Server 2012 R2 suchen, als Ihnen die Themen im TechNet bieten können. Allerdings wurde er nicht mit der gleichen linguistischen Sorgfalt überprüft wie für die Artikel des TechNet üblich, so dass die Sprache gelegentlich holprig klingen mag.

Übersicht

Domänencontroller unter Windows Server 2012 R2 verhindern die Erstellung doppelter Dienstprinzipalnamen (SPNs) und Benutzerprinzipalnamen (UPNs). Dies gilt auch, wenn die Wiederherstellung oder Wiederbelebung eines gelöschten Objekts oder die Umbenennung eines Objekts zu einem Duplikat führen würde.

Hintergrund

Doppelte Dienstprinzipalnamen (SPN) kommen häufig vor. Sie können zu Authentifizierungsfehlern und einer übermäßigen Auslastung der LSASS-CPU führen. Es gibt keine integrierte Methode, um das Hinzufügen eines doppelten SPN oder UPN zu verhindern. *

Doppelte UPN-Werte unterbrechen die Synchronisierung zwischen lokalem AD und Office 365.

*„Setspn.exe“ wird häufig verwendet, um neue SPNs zu erstellen, und wurde funktional in die mit Windows Server 2008 veröffentlichte Version integriert, die eine Prüfung auf Duplikate hinzufügt.

Table SEQ Table \* ARABIC 1: UPN- und SPN-Eindeutigkeit

Funktion Kommentar
UPN-Eindeutigkeit Doppelte UPNs unterbrechen die Synchronisierung von lokalen AD-Konten mit Microsoft Entra ID-basierten Diensten wie Office 365.
SPN-Eindeutigkeit Kerberos erfordert SPNs für die gegenseitige Authentifizierung. Doppelte SPNs führen zu Authentifizierungsfehlern.

Weitere Informationen zu den Anforderungen für die Eindeutigkeit von UPNs und SPNs finden Sie in den Eindeutigkeitseinschränkungen.

Symptome

Die Fehlercodes 8467 oder 8468 oder deren hexadezimale, symbolische oder Zeichenfolgenäquivalente werden in verschiedenen Bildschirmdialogen und in der Ereignis-ID 2974 im Ereignisprotokoll der Verzeichnisdienste protokolliert. Der Versuch, einen doppelten UPN oder SPN zu erstellen, wird nur unter den folgenden Umständen verhindert:

  • Der Schreibvorgang wird von einem Windows Server 2012 R2-DC verarbeitet.

Table SEQ Table \* ARABIC 2: UPN- und SPN-Eindeutigkeit – Fehlercodes

Decimal Hex Symbolisch String
8647 21C7 ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST Fehler beim Vorgang. Der für die Hinzufügung/Änderung angegebene SPN-Wert ist nicht eindeutig innerhalb der Gesamtstruktur.
8648 21C8 ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST Fehler beim Vorgang. Der für die Hinzufügung/Änderung angegebene UPN-Wert ist nicht eindeutig innerhalb der Gesamtstruktur.

Fehler beim Erstellen eines neuen Benutzers bzw. einer neuen Benutzerin, wenn der UPN nicht eindeutig ist

DSA.msc

Der ausgewählte Anmeldename des Benutzers wird in dieser Organisation bereits verwendet. Wählen Sie einen anderen Anmeldenamen, und wiederholen Sie den Vorgang.

Screenshot that shows a message that says the logon name you have chosen is already in use.

Ändern eines vorhandenen Kontos:

Der ausgewählte Benutzeranmeldename ist in der Organisation bereits vorhanden. Geben Sie einen neuen Namen an, indem Sie entweder das Präfix ändern oder ein anderes Suffix aus der Liste wählen.

Screenshot that shows a message that says the logon name you used already exists in the enterprise.

Active Directory-Verwaltungscenter (DSAC.exe)

Der Versuch, einen neuen Benutzer bzw. eine neue Benutzerin im Active Directory-Verwaltungscenter mit einem bereits vorhandenen UPN zu erstellen, führt zu folgendem Fehler:

Screenshot that shows a message that says the new user was not created.

Figure SEQ Figure \* ARABIC 1 Fehler, der im AD-Verwaltungscenter angezeigt wird, wenn ein neuer Benutzer aufgrund eines doppelten UPNs nicht erstellt werden konnte

Quelle von Ereignis 2974: ActiveDirectory_DomainService

Screenshot that shows

Figure SEQ Figure \* ARABIC 2 Ereignis-ID 2974 mit Fehler 8648

Im Ereignis 2974 werden der blockierte Wert und eine Liste mit mindestens einem (bis zu 10) Objekten aufgelistet, die diesen Wert bereits enthalten. In der folgenden Abbildung sehen Sie, dass der UPN-Attributwert dhunt@blue.contoso.com bereits in vier anderen Objekten vorhanden ist. Da es sich hierbei um eine neue Funktion in Windows Server 2012 R2 handelt, kann es in einer gemischten Umgebung immer noch zu einer versehentlichen Erstellung von doppelten UPNs und SPNs kommen, wenn der Schreibversuch von untergeordneten DCs verarbeitet wird.

Screenshot that shows ARABIC 2 Event ID 2974 with error 8648.

Figure SEQ Figure \* ARABIC 3 Ereignis 2974 mit allen Objekten, die den doppelten UPN enthalten

Tipp

Überprüfen Sie regelmäßig die Ereignis-ID 2974, um

  • Versuche zum Erstellen doppelter UPNs oder SPNs zu identifizieren.
  • Objekte zu identifizieren, die bereits Duplikate enthalten.

8648 = „Fehler beim Vorgang. Der für die Hinzufügung/Änderung angegebene SPN-Wert ist nicht eindeutig innerhalb der Gesamtstruktur.“

SetSPN:

„Setspn.exe“ verfügt seit dem Windows Server 2008-Release über eine integrierte Erkennung doppelter SPNs, wenn die Option -S verwendet wird. Allerdings können Sie die Erkennung doppelter SPNs umgehen, indem Sie die Option -A verwenden. Die Erstellung eines doppelten SPNs wird blockiert, wenn ein Windows Server 2012 R2-DC mit SetSPN und der Option „-A“ als Ziel verwendet wird. Die angezeigte Fehlermeldung entspricht der Fehlermeldung, die bei Verwendung der Option „-S“ angezeigt wird. Etwa: „Doppelter SPN gefunden, Vorgang wird abgebrochen.“

ADSIEDIT:

Operation failed. Error code: 0x21c8
The operation failed because UPN value provided for addition/modification is not unique forest-wide.
000021C8: AtrErr: DSID-03200BBA, #1: 0: 000021C8: DSID-03200BBA, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 90290 (userPrincipalName)

Screenshot that shows that the operation failed with error code 0x21c8.

Figure SEQ Figure \* ARABIC 4 Fehlermeldung in ADSIEdit, wenn das Hinzufügen doppelter UPNs blockiert ist

Windows PowerShell

Windows Server 2012 R2:

Screenshot that shows a message indicating that the operation failed.

PowerShell, das unter Server 2012 ausgeführt wird und einen Windows Server 2012 R2-DC zum Ziel hat:

Screenshot that shows an unknown error.

„DSAC.exe“, die unter Windows Server 2012 ausgeführt wird und einen Windows Server 2012 R2-DC zum Ziel hat:

Screenshot that shows a user creation error on non-Windows Server 2012 R2 while targeting Windows Server 2012 R2 DC.

Figure SEQ Figure \* ARABIC 5 DSAC-Fehler bei der Benutzererstellung in einer Nicht-Windows Server 2012 R2-Umgebung, die einen Windows Server 2012 R2-DC zum Ziel hat

Screenshot that shows a user modification error on non-Windows Server 2012 R2 while targeting Windows Server 2012 R2 DC.

Figure SEQ Figure \* ARABIC 6 DSAC-Fehler bei der Benutzeränderung in einer Nicht-Windows Server 2012 R2-Umgebung, die einen Windows Server 2012 R2-DC zum Ziel hat

Die Wiederherstellung eines Objekts, das zu einem doppelten UPN führen würde, schlägt fehl:

Screenshot that shows how to restore an object.

Screenshot that shows that the operation failed because the UPN value provided for addition/modification is not unique forest-wide.

Es wird kein Ereignis protokolliert, wenn ein Objekt aufgrund eines doppelten UPNs/SPNs nicht wiederhergestellt werden kann.

Der UPN des Objekts muss eindeutig sein, damit es wiederhergestellt werden kann.

  1. Identifizieren des UPNs für das Objekt, der im Papierkorb enthalten ist

  2. Identifizieren aller Objekte mit demselben Wert

  3. Entfernen doppelter UPNs

Identifizieren des in Konflikt stehenden UPNs für das gelöschte Objekt mithilfe von „Repadmin.exe“

Repadmin /showattr DCName "DN of deleted objects container" /subtree /filter:"(msDS-LastKnownRDN=<NAME>)" /deleted /atts:userprincipalname
repadmin /showattr DCName "CN=Deleted Objects,DC=blue,DC=contoso,DC=com" /subtree /filter:"(msDS-LastKnownRDN=Dianne Hunt2)" /deleted /atts:userprincipalname

C:\>repadmin /showattr winbluedc1 "cn=deleted objects,dc=blue,dc=contoso,dc=com" /subtree /filter:"(msds-lastknownrdn=Dianne Hunt2)" /deleted /atts:userprincipalname
DN: CN=Dianne Hunt2\0ADEL:dd3ab8a4-3005-4f2f-814f-d6fc54a1a1c0,CN=Deleted Object
s,DC=blue,DC=contoso,DC=com
    1> userPrincipalName: dhunt@blue.contoso.com

So identifizieren Sie alle Objekte mit demselben UPN mithilfe von „Repadmin.exe“

repadmin /showattr WinBlueDC1 "DC=blue,DC=contoso,DC=com" /subtree /filter:"(userPrincipalName=dhunt@blue.contoso.com)" /deleted /atts:DN

C:\>repadmin /showattr winbluedc1 "dc=blue,dc=contoso,dc=com" /subtree /filter:"(userPrincipalName=dhunt@blue.contoso.com)" /deleted /atts:DN
DN: CN=Administrator,CN=Users,DC=blue,DC=contoso,DC=com
DN: CN=xouser1,CN=Users,DC=blue,DC=contoso,DC=com
DN: CN=xouser10,CN=Users,DC=blue,DC=contoso,DC=com
DN: CN=xouser100,CN=Users,DC=blue,DC=contoso,DC=com
DN: CN=Dianne Hunt,OU=Marketing,DC=blue,DC=contoso,DC=com
DN: CN=Dianne Hunt2\0ADEL:dd3ab8a4-3005-4f2f-814f-d6fc54a1a1c0,CN=Deleted Objects,DC=blue,DC=contoso,DC=com

Tipp

Der zuvor nicht dokumentierte /deleted-Parameter in „Repadmin.exe“ wird verwendet, um gelöschte Objekte in das Resultset einzuschließen.

  • Öffnen Sie das Active Directory-Verwaltungscenter, und navigieren Sie zu Globale Suche.

  • Wählen Sie das Optionsfeld In LDAP konvertieren aus.

  • Geben Sie (userPrincipalName=ConflictingUPN) ein.

    • Ersetzen Sie ConflictingUPN durch den tatsächlichen UPN, der sich in Konflikt befindet.
  • Wählen Sie Übernehmen aus.

Screenshot that shows the Global Search page.

Verwenden von Windows PowerShell

Get-ADObject -LdapFilter "(userPrincipalName=dhunt@blue.contoso.com)" -IncludeDeletedObjects -SearchBase "DC=blue,DC=Contoso,DC=com" -SearchScope Subtree -Server winbluedc1.blue.contoso.com

SPN and UPN uniqueness

Wenn das Objekt wiederhergestellt werden muss, müssen Sie die doppelten UPNs aus den anderen Objekten entfernen. Bei nur einem Objekt ist es einfach, das Duplikat mithilfe von ADSIEdit zu entfernen. Wenn mehrere Objekte mit Duplikaten vorhanden sind, ist Windows PowerShell u. U. das bessere Tool.

So legen Sie das UserPrincipalName-Attribut mithilfe von Windows PowerShell auf NULL fest:

Screenshot that shows the operation failed with error code 0x21c7.

Hinweis

Das userPrincipalName-Attribut ist ein Attribut mit nur einem Wert, sodass bei diesem Verfahren nur der doppelte UPN entfernt wird.

Doppelter SPN

Screenshot that shows the error message displayed in ADSIEdit when addition of duplicate SPN is blocked.

Figure SEQ Figure \* ARABIC 8 Fehlermeldung in ADSIEdit, wenn das Hinzufügen doppelter SPNs blockiert ist

Im Ereignisprotokoll der Verzeichnisdienste wird ein ActiveDirectory_DomainService-Ereignis mit der ID 2974 protokolliert.

Operation failed. Error code: 0x21c7
The operation failed
The attribute value provided is not unique in the forest or partition. Attribute:
servicePrincipalName Value=<SPN>
<Object DN> Winerror: 8467

Screenshot that shows the error logged when creation of duplicate SPN is blocked.

Figure SEQ Figure \* ARABIC 9 Fehlermeldung, wenn das Erstellen doppelter SPNs blockiert ist

Workflow

  • If DC == GC

    • Kein Offboxaufruf erforderlich, die Abfrage kann lokal verarbeitet werden.

    • UPN-Fall

      • Abfragen des lokalen gesamtstrukturweiten UPN-Indexes für den bereitgestellten UPN (userPrincipalName; ein globaler Index)

        • Wenn zurückgegebene Einträge == 0 –> Schreibvorgang wird fortgesetzt.

        • Wenn zurückgegebene Einträge != 0 –> Schreibvorgang schlägt fehl.

          • Protokolliertes Ereignis

          • Außerdem wird ein erweiterter Fehler zurückgegeben:

            • 8648:

              ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST

    • SPN-Fall

      • Abfragen des lokalen gesamtstrukturweiten SPN-Indexes für den bereitgestellten SPN (servicePrincipalName; ein globaler Index)

        • Wenn zurückgegebene Einträge == 0 –> Schreibvorgang wird fortgesetzt.

        • Wenn zurückgegebene Einträge != 0 –> Schreibvorgang schlägt fehl.

          • Protokolliertes Ereignis

          • Außerdem wird ein erweiterter Fehler zurückgegeben:

            • 8647:

              ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST

  • If DC != GC

    • Offboxaufruf wünschenswert, aber nicht kritisch, d. h., es handelt sich um eine bestmögliche Eindeutigkeitsprüfung.

      • Die Prüfung wird nur für die lokale DIT ausgeführt, wenn kein GC gefunden wird.

      • Dies wird in einem Ereignis protokolliert.

    • UPN-Fall

      • LDAP-Abfrage für nächstgelegenen GC übermitteln? Abfragen des gesamtstrukturweiten UPN-Indexes des GCs für den bereitgestellten UPN (userPrincipalName; ein globaler Index)

        • Wenn zurückgegebene Einträge == 0 –> Schreibvorgang wird fortgesetzt.

        • Wenn zurückgegebene Einträge != 0 –> Schreibvorgang schlägt fehl.

          • Protokolliertes Ereignis

          • Außerdem wird ein erweiterter Fehler zurückgegeben:

            • 8648:

              ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST

    • SPN-Fall

      • LDAP-Abfrage für nächstgelegenen GC übermitteln? Abfragen des gesamtstrukturweiten SPN-Indexes des GCs für den bereitgestellten SPN (servicePrincipalName; ein globaler Index)

        • Wenn zurückgegebene Einträge == 0 –> Schreibvorgang wird fortgesetzt.

        • Wenn zurückgegebene Einträge != 0 –> Schreibvorgang schlägt fehl.

          • Protokolliertes Ereignis

          • Außerdem wird ein erweiterter Fehler zurückgegeben:

            • 8647:

              ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST

Wenn gelöschte Objekte wiederbelebt werden, werden die vorhandenen SPN- oder UPN-Werte auf Eindeutigkeit überprüft. Wenn ein Duplikat gefunden wird, schlägt die Anforderung fehl.

  • Bei bestimmten Attributänderungen wie DNS-Hostname, SAM-Kontoname usw. werden SPNs bei der Änderung entsprechend aktualisiert. Dabei werden die veralteten SPNs gelöscht und neue SPNs erstellt und der Datenbank hinzugefügt. Die erforderlichen Attributänderungen, für die dieser Pfad ausgelöst wird, sind:

    • ATT_DNS_HOST_NAME

    • ATT_MS_DS_ADDITIONAL_DNS_HOST_NAME

    • ATT_SAM_ACCOUNT_NAME

    • ATT_MS_DS_ADDITIONAL_SAM_ACCOUNT_NAME

    • ATT_SERVER_REFERENCE_BL

    • ATT_USER_ACCOUNT_CONTROL

Wenn es sich bei einem der neuen SPN-Werte um ein Duplikat handelt, schlägt die Änderung fehl. Die wichtigen Attribute in der oben aufgeführten Liste sind ATT_DNS_HOST_NAME (Computername) und ATT_SAM_ACCOUNT_NAME (SAM-Kontoname).

Probieren Sie Folgendes: Untersuchen der SPN- und UPN-Eindeutigkeit

Dies ist die erste von mehreren Probieren Sie Folgendes-Aktivitäten im Modul. Für dieses Modul gibt es keinen separaten Lableitfaden. Die Aktivitäten vom Typ Probieren Sie Folgendes sind im Wesentlichen Freiformaktivitäten, mit denen Sie das Unterrichtsmaterial in der Labumgebung erkunden können. Sie können der Anleitung folgen oder vom Konzept abweichen und in Eigenregie vorgehen.

Hinweis

  • Dies ist die erste von mehreren Probieren Sie Folgendes-Aktivitäten.
  • Für dieses Modul gibt es keinen separaten Lab-Leitfaden.
  • Die Probieren Sie Folgendes-Aktivitäten sind im Wesentlichen Freiformaktivitäten, mit denen Sie das Unterrichtsmaterial in der Lab-Umgebung erkunden können.
  • Sie können der Anleitung folgen oder vom Konzept abweichen und in Eigenregie vorgehen.
  • Auch wenn nicht alle Abschnitte eine Probieren Sie Folgendes-Anleitung enthalten, sollten Sie ggf. trotzdem die Unterrichtsinhalte im Lab erkunden.

Experimentieren Sie mit der Eindeutigkeit von SPNs und UPNs. Folgen Sie dieser Anleitung, oder machen Sie Ihre eigenen Erfahrungen.

  1. Erstellen Sie neue Benutzer mit UPNs.

  2. Erstellen Sie Konten mit SPNs.

  3. Erstellen Sie entweder einen neuen Benutzer mit einem bereits definierten UPN, oder ändern Sie den UPN eines vorhandenen Kontos. Führen Sie dieselben Schritte für einen SPN eines anderen Kontos aus.

    1. Geben Sie für ein vorhandenes Benutzerkonto einen bereits verwendeten UPN an.

      1. Verwenden Sie dazu PowerShell, ADSIEDIT oder das Active Directory-Verwaltungscenter (DSAC.exe).
    2. Geben Sie für ein vorhandenes Konto einen bereits verwendeten SPN an.

      1. Verwenden Sie dazu Windows PowerShell, ADSIEDIT oder SetSPN.
  4. Untersuchen Sie die Fehler.

Optional

  1. Klären Sie mit Ihrem*r Kursleiter*in, ob der AD-Papierkorb im Active Directory-Verwaltungscenter aktiviert werden kann. Falls dies zutrifft, fahren Sie mit dem nächsten Schritt fort.

  2. Geben Sie den UPN für ein Benutzerkonto an.

  3. Löschen des Kontos

  4. Geben Sie ein anderes Konto mit demselben UPN wie den für das gelöschte Konto an.

  5. Versuchen Sie, das Konto aus dem Papierkorb wiederherzustellen.

  6. Stellen Sie sich vor, dass der Fehler aus dem vorherigen Schritt angezeigt wird (und Sie nicht wissen, welche Schritte Sie bis dahin ausgeführt haben). Sie möchten das Konto wiederherstellen. Die Beispielschritte finden Sie in der Arbeitsmappe.