SPN- und UPN-Eindeutigkeit
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.
Ä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.
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:
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
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.
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)
Figure SEQ Figure \* ARABIC 4 Fehlermeldung in ADSIEdit, wenn das Hinzufügen doppelter UPNs blockiert ist
Windows PowerShell
Windows Server 2012 R2:
PowerShell, das unter Server 2012 ausgeführt wird und einen Windows Server 2012 R2-DC zum Ziel hat:
„DSAC.exe“, die unter Windows Server 2012 ausgeführt wird und einen Windows Server 2012 R2-DC zum Ziel hat:
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
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:
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.
Identifizieren des UPNs für das Objekt, der im Papierkorb enthalten ist
Identifizieren aller Objekte mit demselben Wert
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.
Verwenden der globalen Suche
Ö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.
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
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:
Hinweis
Das userPrincipalName-Attribut ist ein Attribut mit nur einem Wert, sodass bei diesem Verfahren nur der doppelte UPN entfernt wird.
Doppelter SPN
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
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.
Erstellen Sie neue Benutzer mit UPNs.
Erstellen Sie Konten mit SPNs.
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.
Geben Sie für ein vorhandenes Benutzerkonto einen bereits verwendeten UPN an.
- Verwenden Sie dazu PowerShell, ADSIEDIT oder das Active Directory-Verwaltungscenter (DSAC.exe).
Geben Sie für ein vorhandenes Konto einen bereits verwendeten SPN an.
- Verwenden Sie dazu Windows PowerShell, ADSIEDIT oder SetSPN.
Untersuchen Sie die Fehler.
Optional
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.
Geben Sie den UPN für ein Benutzerkonto an.
Löschen des Kontos
Geben Sie ein anderes Konto mit demselben UPN wie den für das gelöschte Konto an.
Versuchen Sie, das Konto aus dem Papierkorb wiederherzustellen.
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.