Uniekheid van SPN en UPN
Auteur: Justin Turner, Senior Support Escalation Engineer bij het Windows-team
Notitie
Deze inhoud wordt geschreven door een klantondersteuningstechnicus van Microsoft en is bedoeld voor ervaren beheerders en systeemarchitecten die op zoek zijn naar diepere technische uitleg van functies en oplossingen in Windows Server 2012 R2 dan onderwerpen op TechNet meestal bieden. Het heeft echter niet dezelfde bewerkingspassen ondergaan, dus sommige van de taal lijkt misschien minder professioneel dan wat doorgaans op TechNet wordt gevonden.
Overzicht
Domeincontrollers met Windows Server 2012 R2 blokkeren het maken van dubbele service-principalnamen (SPN) en UPN (User Principal Names). Dit geldt ook als het herstel of de reanimatie van een verwijderd object of het hernoemen van een object tot een duplicaat zou leiden.
Achtergrond
Dubbele SPN-namen (Service Principal Names) treden vaak op en leiden tot verificatiefouten en kunnen leiden tot overmatig LSASS CPU-gebruik. Er is geen in-box-methode om de toevoeging van een dubbele SPN of UPN te blokkeren. *
Dubbele UPN-waarden verbreken synchronisatie tussen on-premises AD en Office 365.
*Setspn.exe wordt vaak gebruikt om nieuwe SPN's te maken en functioneel is ingebouwd in de versie die is uitgebracht met Windows Server 2008 waarmee een controle op duplicaten wordt toegevoegd.
Tabel SEQ Tabel \* ARABIC 1: Uniciteit van UPN en SPN
Functie | Commentaar |
---|---|
UNIEKHEID VAN UPN | Dubbele UPN's breken synchronisatie van on-premises AD-accounts met Microsoft Entra ID-services zoals Office 365. |
UNIEKHEID van SPN | Kerberos vereist SPN's voor wederzijdse verificatie. Dubbele SPN's leiden tot verificatiefouten. |
Zie Beperkingen voor uniekheidvoor meer informatie over de vereisten voor uniekheid voor UPN's en SPN's.
Symptomen
Foutcodes 8467 of 8468 of hun hex-, symbolische of tekenreeksequivalenten worden vastgelegd in verschillende dialoogvensters op het scherm en in gebeurtenis-id 2974 in het gebeurtenislogboek van Directory Services. De poging om een dubbele UPN of SPN te maken, wordt alleen onder de volgende omstandigheden geblokkeerd:
- De schrijfbewerking wordt verwerkt door een Windows Server 2012 R2 DC
TABEL SEQ Table \* ARABIC 2: UPN- en SPN-foutcodes voor uniekheid
Decimaal | Hex | Symbolisch | Snaar |
---|---|---|---|
8647 | 21C7 | ERROR_DS_SPN_WAARDE_NIET_UNIEK_IN_FOREST | De bewerking is mislukt omdat de SPN-waarde die is opgegeven voor toevoeging/wijziging, niet uniek is voor het hele forest. |
8648 | 21C8 | FOUT_DS_UPN_WAARDE_NIET_UNIEK_IN_BOS | De bewerking is mislukt omdat de UPN-waarde die is opgegeven voor toevoeging/wijziging, niet uniek is voor het hele forest. |
Het maken van nieuwe gebruikers mislukt als UPN niet uniek is
DSA.msc
De gebruikersaanmeldingsnaam die u hebt gekozen, is al in gebruik in deze onderneming. Kies een andere aanmeldingsnaam en probeer het opnieuw.
Een bestaand account wijzigen:
De opgegeven aanmeldingsnaam van de gebruiker bestaat al in de onderneming. Geef een nieuw voorvoegsel op door het voorvoegsel te wijzigen of een ander achtervoegsel in de lijst te selecteren.
Active Directory-beheercentrum (DSAC.exe)
Een poging om een nieuwe gebruiker te maken in Active Directory-beheercentrum met een UPN die al bestaat, retourneert de volgende fout.
nl-NL:
Figure SEQ Figure \* ARABIC 1 fout weergegeven in AD Beheercentrum wanneer het aanmaken van een nieuwe gebruiker mislukt vanwege dubbele UPN
Gebeurtenis 2974 Bron: ActiveDirectory_DomainService
laat zien
Figuur SEQ Figure \* ARABIC 2 gebeurtenis-id 2974 met fout 8648
De gebeurtenis 2974 bevat de waarde die is geblokkeerd en een lijst met een of meer objecten (maximaal 10) die die waarde al bevatten. In de volgende afbeelding ziet u dat de upn-kenmerkwaarde dhunt@blue.contoso.com al bestaat op vier andere objecten. Omdat dit een nieuwe functie is in Windows Server 2012 R2, zal in een gemengde omgeving het per ongeluk aanmaken van dubbele UPN's en SPN's nog steeds plaatsvinden wanneer down-level domeincontrollers het schrijfverzoek verwerken.
Afbeelding SEQ Afbeelding * ARABISCH 3 Gebeurtenis 2974 met alle objecten die de dubbele UPN bevatten
Tip
Controleer regelmatig evenement-ID 2974s om te:
- Identificeer pogingen om dubbele UPN's of SPN's te maken.
- objecten identificeren die al duplicaten bevatten
8648 = "De bewerking is mislukt omdat de UPN-waarde die is opgegeven voor toevoeging/wijziging niet uniek is in het forest."
SetSPN:
Setspn.exe heeft dubbele SPN-detectie ingebouwd sinds de release van Windows Server 2008 bij gebruik van de optie -S. U kunt de dubbele SPN-detectie overslaan met behulp van de optie '-A'. Het maken van een dubbele SPN wordt geblokkeerd bij het doelwit maken van een Windows Server 2012 R2 DC met behulp van SetSPN met de optie -A. Het weergegeven foutbericht is hetzelfde als het foutbericht dat wordt weergegeven bij het gebruik van de optie -S: 'Dubbele SPN gevonden, afgebroken bewerking!'
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 Foutbericht weergegeven in ADSIEdit bij het toevoegen van een dubbele UPN wordt geblokkeerd
Windows PowerShell
Windows Server 2012 R2:
PowerShell die wordt uitgevoerd vanaf Server 2012 gericht op een Windows Server 2012 R2 DC:
DSAC.exe draait op Windows Server 2012 en richt zich op een Windows Server 2012 R2 DC:
Figuur SEQ Figuur \* ARABISCH 5 DSAC-gebruiker fout bij het maken op een niet-Windows Server 2012 R2 terwijl gericht op Windows Server 2012 R2 DC
Afbeelding SEQ Afbeelding \* ARABIC 6 Fout bij DSAC-gebruikerswijziging op een niet-Windows Server 2012 R2 terwijl Windows Server 2012 R2 DC wordt ingesteld
Herstellen van een object dat tot een dubbele UPN zou leiden, mislukt:
Er wordt geen gebeurtenis geregistreerd wanneer een object niet kan worden hersteld vanwege een dubbele UPN/SPN.
De UPN van het object moet uniek zijn om het te kunnen herstellen.
De UPN identificeren die zich in het object in de Prullenbak bevindt
Alle objecten met dezelfde waarde identificeren
Verwijder de dubbele UPN(s)
Identificeer de conflicterende UPN op het verwijderde objectUsing 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
Alle objecten met dezelfde UPN identificeren: met behulp van 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
Tip
De eerder niet-gedocumenteerde parameter /deleted in repadmin.exe wordt gebruikt om verwijderde objecten op te nemen in de resultatenset
Globale zoekopdracht gebruiken
Open Active Directory-beheercentrum en navigeer naar algemene zoekfunctie
Selecteer het keuzerondje Converteren naar LDAP-
Typ (userPrincipalName=ConflictingUPN)
- Vervang ConflictingUPN door de daadwerkelijke UPN die in conflict is.
Selecteer toepassen
Windows PowerShell gebruiken
Get-ADObject -LdapFilter "(userPrincipalName=dhunt@blue.contoso.com)" -IncludeDeletedObjects -SearchBase "DC=blue,DC=Contoso,DC=com" -SearchScope Subtree -Server winbluedc1.blue.contoso.com
Als het object moet worden hersteld, moet u de dubbele UPN's van de andere objecten verwijderen. Voor slechts één object is het eenvoudig genoeg om ADSIEdit te gebruiken om het duplicaat te verwijderen. Als er meerdere objecten met duplicaten zijn, is Windows PowerShell mogelijk het beste hulpmiddel om te gebruiken.
Als u het kenmerk UserPrincipalName wilt nullen met behulp van Windows PowerShell:
Notitie
Het kenmerk userPrincipalName is kenmerk met één waarde, dus met deze procedure wordt alleen de dubbele UPN verwijderd.
Dubbele SPN
Afbeelding SEQ Figure \* ARABIC 8 Foutbericht weergegeven in ADSIEdit wanneer het toevoegen van dubbele SPN wordt geblokkeerd
In het gebeurtenislogboek van Directory Services is een ActiveDirectory_DomainService gebeurtenis-id 2974geregistreerd.
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
Werkstroom
Als DC == GC
Er is geen offbox-aanroep vereist, query kan lokaal worden voldaan
UPN-zaak
Query's uitvoeren op lokale UPN-index voor de gehele forest voor opgegeven UPN (userPrincipalName; een globale index)
Als invoer geretourneerd == 0 is, dan worden> schrijfbewerkingen voortgezet.
Als de geretourneerde waarden !=0 zijn, mislukt het schrijven naar>
Gebeurtenis geregistreerd
Retourneert ook een uitgebreide fout:
8648:
FOUT_DS_UPN_WAARDE_NIET_UNIEK_IN_FOREST
SPN-aanvraag
Voer een query uit op de lokale SPN-index voor de gehele forest voor opgegeven SPN (servicePrincipalName; een globale index)
Als vermeldingen geretourneerd == 0 -> schrijfbewerkingen worden voortgezet
Als vermeldingen niet gelijk aan nul zijn -> schrijven mislukt
Gebeurtenis geregistreerd
Retourneert ook een gedetailleerde foutmelding.
8647:
FOUT_DS_SPN_WAARDE_NIET_UNIEK_IN_BOS
Als DC != GC
Offbox call wenselijk maar niet kritiek, het betreft een poging tot beste inspanning voor een uniekheidscheck.
Controle wordt alleen uitgevoerd op lokale DIT als GC niet kan worden gevonden
Gebeurtenis gelogd om dit aan te geven
UPN-case
LDAP-query indienen bij de dichtstbijzijnde GC? Vraag de bosbrede UPN-index van de GC op voor de opgegeven UPN (userPrincipalName; een globale index).
Als vermeldingen geretourneerd == 0 -> schrijfbewerkingen worden voortgezet
Als de vermeldingen die terugkomen niet gelijk zijn aan 0 - mislukt> schrijven.
Gebeurtenis geregistreerd
Retourneert ook een uitgebreide fout:
8648:
ERROR_DS_DE_UPN_WAARDE_NIET_UNIEK_IN_FOREST
SPN-aanvraag
Een LDAP-query indienen bij de dichtstbijzijnde GC? vraag de bosbrede SPN-index van de GC op voor de opgegeven SPN (servicePrincipalName; een globale index)
Als vermeldingen gelijk zijn aan 0 -> wordt het schrijven voortgezet
Als de invoer niet gelijk aan 0 is, mislukt het schrijven van>.
Gebeurtenis geregistreerd
Retourneert ook een uitgebreide fout:
8647:
FOUT_DS_SPN_WAARDE_NIET_UNIEK_IN_HET_BOS
Wanneer verwijderde objecten opnieuw worden gereanimeerd, worden SPN- of UPN-waarden gecontroleerd op uniekheid. Als er een duplicaat wordt gevonden, mislukt de aanvraag.
Voor bepaalde kenmerkwijzigingen, zoals DNS-hostnaam, SAM-accountnaam, enzovoort, worden SPN's dienovereenkomstig bijgewerkt wanneer de wijziging wordt aangebracht. In het proces worden de verouderde SPN's verwijderd en worden nieuwe SPN's samengesteld en toegevoegd aan de database. De vereiste kenmerkwijzigingen waarmee dit pad wordt geactiveerd, zijn:
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 (Gebruikersaccountcontrole)
Als een van de nieuwe SPN-waarden een duplicaat is, mislukken we de wijziging. In de bovenstaande lijst zijn de belangrijke kenmerken ATT_DNS_HOST_NAME (Computernaam) en ATT_SAM_ACCOUNT_NAME (SAM-accountnaam).
Probeer dit: SPN- en UPN-uniekheid verkennen
Dit is de eerste van verschillende "Try This" activiteiten in de module. Er is geen afzonderlijke labhandleiding voor deze module. De Try This-activiteiten zijn vrije activiteiten waarmee u het lesmateriaal in de testomgeving kunt verkennen. U hebt de mogelijkheid om de prompt te volgen of het script af te gaan en uw eigen activiteit te bedenken.
Notitie
- Dit is de eerste van verschillende activiteitenTry This.
- Er is geen afzonderlijke labhandleiding voor deze module.
- De Try This-activiteiten zijn in wezen vrije activiteiten waarmee u het lesmateriaal in de testomgeving kunt verkennen.
- U hebt de mogelijkheid om de prompt te volgen of het script af te gaan en uw eigen activiteit te bedenken.
- Hoewel niet alle secties een Probeer Dit prompt hebben, wordt u nog steeds aangemoedigd om de lesinhoud in het lab te verkennen, waar van toepassing.
Experimenteer met SPN- en UPN-uniekheid. Volg deze aanwijzingen of voltooi uw eigen aanwijzingen.
Nieuwe gebruikers maken met UPN
Accounts maken met SPN's
Maak een nieuwe gebruiker met een UPN die al eerder is gedefinieerd of wijzig de UPN van een bestaand account. Doe hetzelfde voor een SPN op een ander account
Een bestaand gebruikersaccount vullen met een UPN die al in gebruik is
- PowerShell, ADSIEDIT of Active Directory-beheercentrum (DSAC.exe) gebruiken
Een bestaand account vullen met een SPN die al wordt gebruikt
- Gebruik Windows PowerShell, ADSIEDIT of SetSPN
Bekijk de fouten
Optioneel
Controleer bij de docent van het leslokaal of het goed is om de AD-Prullenbak in te schakelen in het Active Directory-beheercentrum. Zo ja, ga dan verder met de volgende stap.
Vul de UPN in op een gebruikersaccount
Het account verwijderen
Een ander account vullen met dezelfde UPN als het verwijderde account
Probeer de GUI van de Prullenbak te gebruiken om het account te herstellen
Stel dat u de fout te zien krijgt die u in de vorige stap ziet. (en heb geen geschiedenis van de stappen die u zojuist hebt uitgevoerd) Het doel is om het herstellen van het account te voltooien. Zie de werkmap, bijvoorbeeld stappen.