Delen via


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.

Schermopname van een bericht met de melding dat de aanmeldingsnaam die u hebt gekozen, al in gebruik is.

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.

Schermopname van een bericht met de aanmeldingsnaam die u hebt gebruikt, bestaat al in de onderneming.

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: Schermopname die een bericht toont dat zegt dat de nieuwe gebruiker niet is aangemaakt.

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

Schermopname die 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.

Screenshot die ARABIC 2 Event-ID 2974 met fout 8648 toont.

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)

Schermopname waarin wordt aangegeven dat de bewerking is mislukt met foutcode 0x21c8.

Figure SEQ Figure \* ARABIC 4 Foutbericht weergegeven in ADSIEdit bij het toevoegen van een dubbele UPN wordt geblokkeerd

Windows PowerShell

Windows Server 2012 R2:

Schermopname met een bericht dat aangeeft dat de bewerking is mislukt.

PowerShell die wordt uitgevoerd vanaf Server 2012 gericht op een Windows Server 2012 R2 DC:

Schermopname met een onbekende fout.

DSAC.exe draait op Windows Server 2012 en richt zich op een Windows Server 2012 R2 DC:

Schermafbeelding die een fout bij het aanmaken van een gebruiker laat zien op een niet-Windows Server 2012 R2-server terwijl Windows Server 2012 R2 DC wordt aangewezen.

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

Schermopname van een gebruikerswijzigingsfout in niet-Windows Server 2012 R2 tijdens het instellen van 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:

Schermopname die laat zien hoe u een object kunt herstellen.

Schermopname die laat zien dat de bewerking is mislukt omdat de UPN-waarde die is opgegeven voor toevoeging/wijziging, niet uniek is voor het hele forest.

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.

  1. De UPN identificeren die zich in het object in de Prullenbak bevindt

  2. Alle objecten met dezelfde waarde identificeren

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

  • 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

Schermopname van de pagina Algemeen zoeken.

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

SPN- en UPN-uniekheid

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:

Schermopname waarin wordt weergegeven dat de bewerking is mislukt met foutcode 0x21c7.

Notitie

Het kenmerk userPrincipalName is kenmerk met één waarde, dus met deze procedure wordt alleen de dubbele UPN verwijderd.

Dubbele SPN

Schermopname van het foutbericht dat wordt weergegeven in ADSIEdit wanneer het toevoegen van dubbele SPN wordt geblokkeerd.

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.

  1. Nieuwe gebruikers maken met UPN

  2. Accounts maken met SPN's

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

    1. Een bestaand gebruikersaccount vullen met een UPN die al in gebruik is

      1. PowerShell, ADSIEDIT of Active Directory-beheercentrum (DSAC.exe) gebruiken
    2. Een bestaand account vullen met een SPN die al wordt gebruikt

      1. Gebruik Windows PowerShell, ADSIEDIT of SetSPN
  4. Bekijk de fouten

Optioneel

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

  2. Vul de UPN in op een gebruikersaccount

  3. Het account verwijderen

  4. Een ander account vullen met dezelfde UPN als het verwijderde account

  5. Probeer de GUI van de Prullenbak te gebruiken om het account te herstellen

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