Unicité des noms SPN et UPN
Auteur : Justin Turner, ingénieur support senior d’escalade auprès du groupe Windows
Notes
Ce contenu est écrit par un ingénieur du support client Microsoft et est destiné aux administrateurs expérimentés et aux architectes système qui recherchent des explications techniques plus approfondies des fonctionnalités et des solutions Windows Server 2012 R2 que n'en proposent généralement les rubriques de TechNet. Toutefois, il n'a pas subi les mêmes passes de correction. De ce fait, une partie du langage peut sembler moins finalisée que le contenu de TechNet.
Vue d’ensemble
Les contrôleurs de domaine exécutant Windows Server 2012 R2 bloquent la création de noms de principal du service (SPN) et de noms d’utilisateurs principaux (UPN) en double. Cela inclut savoir si la restauration ou la réanimation d’un objet supprimé ou le renommage d’un objet entraînerait un doublon.
Contexte
Les noms de principal de service (SPN) dupliqués se produisent couramment, entraînant des échecs d’authentification et pouvant causer une utilisation excessive du processeur LSASS. Il n’existe aucune méthode prête à l’emploi pour bloquer l’ajout d’un SPN ou d’un UPN en double. *
Les valeurs UPN en double interrompent la synchronisation entre AD local et Office 365.
*Setspn.exe est couramment utilisé pour créer de nouveaux SPN et a été intégré fonctionnellement à la version publiée avec Windows Server 2008 qui ajoute une vérification des doublons.
Table SEQ Table \* ARABIC 1 : Unicité d’UPN et de SPN
Fonctionnalité | Commentaire |
---|---|
Unicité de l’UPN | Les UPN doubles interrompent la synchronisation des comptes AD locaux avec des services Microsoft Entra ID comme Office 365. |
Unicité du SPN | Kerberos nécessite des SPN pour l’authentification mutuelle. Les SPN dupliqués entraînent des échecs d’authentification. |
Pour plus d’informations sur les exigences d’unicité pour les UPN et les SPN, consultez Contraintes d’unicité.
Symptômes
Les codes d’erreur 8467 ou 8468 ou leurs équivalents hexadécimaux, symboliques ou au format chaîne sont enregistrés dans différentes boîtes de dialogue à l’écran et dans l’ID d’événement 2974 dans le journal des événements des services d’annuaire. La tentative de création d’un UPN ou d’un SPN en double est bloquée uniquement dans les circonstances suivantes :
- L’écriture est traitée par un contrôleur de domaine Windows Server 2012 R2
Table SEQ Table \* ARABIC 2 : Codes d’erreur d’unicité d’UPN et de SPN
Decimal | Hex | Symbolique | String |
---|---|---|---|
8647 | 21C7 | ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST | L’opération a échoué, car la valeur SPN fournie pour l’ajout/modification n’est pas unique à l’échelle de la forêt. |
8648 | 21C8 | ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST | L’opération a échoué, car la valeur UPN fournie pour l’ajout/modification n’est pas unique à l’échelle de la forêt. |
Échec de la création d’un utilisateur si l’UPN n’est pas unique
DSA.msc
Le nom d’ouverture de session utilisateur que vous avez choisi est déjà utilisé dans cette entreprise. Choisissez un autre nom de connexion, puis réessayez.
Modifier un compte existant :
Le nom de connexion utilisateur spécifié existe déjà dans l’entreprise. Spécifiez-en un nouveau, en modifiant le préfixe ou en sélectionnant un suffixe différent dans la liste.
Centre d’administration Active Directory (DSAC.exe)
Une tentative de création d’un utilisateur dans le Centre d’administration Active Directory avec un UPN qui existe déjà retourne l’erreur suivante.
Figure SEQ Figure \* Erreur ARABIC 1 affichée dans le Centre d’administration AD lorsque la création d’un nouvel utilisateur échoue en raison d’un UPN en double
Source de l’événement 2974 : ActiveDirectory_DomainService
Figure SEQ Figure \* ID d’événement ARABIC 2 2974 avec l’erreur 8648
L’événement 2974 répertorie la valeur qui a été bloquée et une liste d’un ou plusieurs objets (jusqu’à 10) qui contiennent déjà cette valeur. Dans la figure suivante, vous pouvez voir que la valeur de l’attribut UPN dhunt@blue.contoso.com existe déjà sur quatre autres objets. Étant donné qu’il s’agit d’une nouvelle fonctionnalité dans Windows Server 2012 R2, la création accidentelle d’UPN et de SPN en double dans un environnement mixte se produit toujours lorsque les contrôleurs de domaine de bas niveau traitent la tentative d’écriture.
Figure SEQ Figure \* Événement ARABIC 3 Event 2974 montrant tous les objets contenant l’UPN en double
Conseil
Passez régulièrement en revue les ID d’événement 2974 pour :
- identifier les tentatives de création d’UPN ou de SPN en double
- identifier les objets qui contiennent déjà des doublons
8648 = « L’opération a échoué, car la valeur UPN fournie pour l’ajout/modification n’est pas unique à l’échelle de la forêt. »
SetSPN :
Setspn.exe dispose d’une détection de SPN en double intégrée depuis Windows Server 2008 lors de l’utilisation de l’option « -S ». Vous pouvez toutefois contourner la détection des SPN en double à l’aide de l’option « -A ». La création d’un SPN en double est bloquée lors du ciblage d’un contrôleur de domaine Windows Server 2012 R2 à l’aide de SetSPN avec l’option -A. Le message d’erreur affiché est le même que celui affiché lors de l’utilisation de l’option -S : « SPN dupliqué trouvé, abandon de l’opération ! »
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 \* Message d’erreur ARABIC 4 affiché dans ADSIEdit lorsque l’ajout de l’UPN en double est bloqué
Windows PowerShell
Windows Server 2012 R2 :
PowerShell s’exécutant à partir de Server 2012 ciblant un contrôleur de domaine Windows Server 2012 R2 :
DSAC.exe s’exécutant sur Windows Server 2012 ciblant un contrôleur de domaine Windows Server 2012 R2 :
Figure SEQ Figure \* Erreur ARABIC 5 de création d’utilisateur DSAC sur une instance non Windows Server 2012 R2 lors du ciblage du contrôleur de domaine Windows Server 2012 R2
Figure SEQ Figure \* Erreur ARABIC 6 de modification de l’utilisateur DSAC sur une instance non Windows Server 2012 R2 lors du ciblage du contrôleur de domaine Windows Server 2012 R2
La restauration d’un objet qui entraînerait l’échec d’un UPN en double :
Aucun événement n’est journalisé lorsqu’un objet ne parvient pas à être restauré en raison d’un UPN/SPN en double.
L’UPN de l’objet doit être unique pour pouvoir être restauré.
Identifier l’UPN qui existe sur l’objet dans la Corbeille
Identifier tous les objets qui ont la même valeur
Supprimer le ou les UPN dupliqués
Identifier l’UPN en conflit sur l’objet supprimé avec 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
Pour identifier tous les objets avec le même UPN : avec 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
Conseil
Le paramètre /deleted précédemment non documenté dans repadmin.exe est utilisé pour inclure des objets supprimés dans le jeu de résultats
Utilisation de la recherche globale
Ouvrez le Centre d’administration Active Directory et accédez à Recherche globale
Sélectionnez la case d’option Convertir en LDAP
Entrez (userPrincipalName=ConflictingUPN)
- Remplacez ConflictingUPN par l’UPN réel en conflit
Sélectionnez Appliquer
Utilisation de 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
Si l’objet doit être restauré, vous devez supprimer les UPN dupliqués des autres objets. Pour un seul objet, il est assez simple d’utiliser ADSIEdit pour supprimer le doublon. S’il existe plusieurs objets avec des doublons, Windows PowerShell peut être le meilleur outil à utiliser.
Pour annuler l’attribut UserPrincipalName à l’aide de Windows PowerShell :
Remarque
L’attribut userPrincipalName étant un attribut à valeur unique, cette procédure supprime uniquement l’UPN en double.
SPN dupliqué
Figure SEQ Figure \* Message d’erreur ARABIC 8 affiché dans ADSIEdit lorsque l’ajout du SPN en double est bloqué
Un ID d’événement ActiveDirectory_DomainService2974 est journalisé dans le journal des événements des services d’annuaire.
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 \* Erreur ARABIC 9 enregistrée lorsque la création du SPN en double est bloquée
Workflow
Si DC == GC
Aucun appel offbox requis, la requête peut être satisfaite localement
Cas UPN
Interroger l’index UPN local à l’échelle de la forêt pour l’UPN fourni (userPrincipalName ; index global)
Si entrées retournées == 0 -> l’écriture continue
Si entrées retournées !=0 -> l’écriture échoue
Événement journalisé
Retourne également l’erreur étendue :
8648 :
ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST
Cas SPN
Interroger l’index SPN local à l’échelle de la forêt pour le SPN fourni (servicePrincipalName ; index global)
Si entrées retournées == 0 -> l’écriture continue
Si entrées retournées !=0 -> l’écriture échoue
Événement journalisé
Retourne également l’erreur étendue :
8647 :
ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST
Si DC != GC
Appel offbox souhaitable mais pas critique, c’est-à-dire qu’il s’agit d’une vérification de l’unicité de meilleur effort
Vérifiez le produit par rapport au DIT local uniquement si le GC ne peut pas être localisé
Événement journalisé pour indiquer ce type
Cas UPN
Envoyer une requête LDAP par rapport au GC le plus proche ? interroger l’index UPN à l’échelle de la forêt du GC pour obtenir l’UPN fourni (userPrincipalName ; index global)
Si entrées retournées == 0 -> l’écriture continue
Si entrées retournées !=0 -> l’écriture échoue
Événement journalisé
Retourne également l’erreur étendue :
8648 :
ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST
Cas SPN
Envoyer une requête LDAP par rapport au GC le plus proche ? interroger l’index SPN à l’échelle de la forêt du GC pour le SPN fourni (servicePrincipalName ; index global)
Si entrées retournées == 0 -> l’écriture continue
Si entrées retournées !=0 -> l’écriture échoue
Événement journalisé
Retourne également l’erreur étendue :
8647 :
ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST
Lorsque des objets supprimés sont réanimés, les valeurs de SPN ou UPN présentes sont vérifiées pour l’unicité. Si un doublon est trouvé, la demande échoue.
Pour certaines modifications d’attributs comme le nom d’hôte DNS, le nom du compte SAM, etc., lorsque la modification est effectuée, les noms de service sont mis à jour en conséquence. Au passage, les SPN obsolètes sont supprimés, et de nouveaux noms de service sont construits et ajoutés à la base de données. Les modifications d’attribut requises pour lesquelles ce chemin d’accès est déclenché sont les suivantes :
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
Si l’une des nouvelles valeurs SPN est un doublon, la modification échoue. Dans la liste ci-dessus, les attributs importants sont ATT_DNS_HOST_NAME (Nom de l’ordinateur) et ATT_SAM_ACCOUNT_NAME (Nom du compte SAM).
Try This : Exploration de l’unicité du SPN et de l’UPN
Il s’agit de la première des activités « Try This » dans le module. Il n’existe pas de guide lab distinct pour ce module. Les activités Try This sont des activités de forme libre qui vous permettent d’explorer le matériel de leçon dans l’environnement lab. Vous avez la possibilité de suivre l’invite ou de désactiver le script et de créer votre propre activité.
Remarque
- Il s’agit de la première de plusieurs activités « Try This ».
- Il n’existe pas de guide lab distinct pour ce module.
- Les activités Try This sont essentiellement des activités de forme libre qui vous permettent d’explorer le matériel de leçon dans l’environnement lab.
- Vous avez la possibilité de suivre l’invite ou de désactiver le script et de créer votre propre activité.
- Bien que toutes les sections n’aient pas d’invite Try This, nous vous encourageons à explorer le contenu de la leçon dans le lab, le cas échéant.
Expérimentez l’unicité du SPN et de l’UPN. Suivez ces invites ou procédez à votre convenance.
Créer de nouveaux utilisateurs avec un UPN
Créer des comptes avec des SPN
Créer un utilisateur avec un UPN déjà défini ou modifiez l’UPN d’un compte existant. En faire de même pour un SPN sur un autre compte
Remplir un compte d’utilisateur existant avec un UPN déjà utilisé
- Avec PowerShell, d’ADSIEDIT ou le Centre d’administration Active Directory (DSAC.exe)
Remplir un compte existant avec un SPN déjà utilisé
- Avec Windows PowerShell, ADSIEDIT ou SetSPN
Observer les erreurs
Au choix
Vérifiez auprès de l’instructeur de classe que vous pouvez activer la Corbeille AD dans le Centre d’administration Active Directory. Si c’est le cas, passez à l’étape suivante.
Remplir l’UPN sur un compte d’utilisateur
Supprimer le compte
Remplir un autre compte avec le même UPN que le compte supprimé
Tenter d’utiliser l’interface graphique de la Corbeille pour restaurer le compte
Imaginez que vous recevez l’erreur que vous voyez à l’étape précédente (et vous n’avez pas d’historique des étapes que vous venez d’effectuer). Votre objectif est d’effectuer la restauration du compte. Consultez le classeur pour obtenir des exemples d’étapes.