Contexte et besoins
Toujours sur l’Active Directory du lab interne ANSSI, domaine LAB.LOCAL, je rejoue le scénario le plus fréquent du support utilisateur : un collaborateur a oublié son mot de passe. Côté procédure, ce ticket arrive par téléphone ou par GLPI, le technicien vérifie l’identité du demandeur, puis réinitialise le mot de passe avec un mot de passe temporaire que l’utilisateur devra changer au premier login.
L’objectif de cette intervention est triple : connaître la manipulation ADUC complète, savoir la rejouer en PowerShell pour scripter, et formaliser le protocole de communication du nouveau mot de passe. Cible : l’utilisateur Jean Dupont créé dans l’article précédent, dont le compte est verrouillé après cinq tentatives ratées de connexion.
Rappel théorique sur l’authentification AD
Cycle de vie d’un mot de passe
Quand un utilisateur ouvre une session, le client négocie un TGT Kerberos auprès du KDC du domaine. Ce TGT est dérivé du hash du mot de passe, jamais du mot de passe en clair : l’AD ne stocke pas le mot de passe lui-même mais son hash (NT-OWF par défaut, c’est-à-dire MD4 du mot de passe Unicode).
Quand on réinitialise un mot de passe avec un compte privilégié, on remplace ce hash par celui du nouveau mot de passe. C’est différent d’un changement classique, qui exige le mot de passe actuel pour être validé.
| Opération | Permission requise | Effet |
|---|---|---|
| Change Password | L’utilisateur lui-même, avec l’ancien mot de passe | Met à jour le hash, recalcule éventuellement les clés Kerberos |
| Reset Password | Compte avec l’extension de droit Reset Password sur l’objet utilisateur | Force un nouveau hash sans connaître l’ancien |
Verrouillage de compte
Le verrouillage est régi par la Account Lockout Policy du domaine :
Account lockout threshold: nombre de tentatives ratées avant verrouillage (5 sur le lab).Account lockout duration: durée du verrouillage automatique (30 minutes).Reset account lockout counter after: délai avant que le compteur de tentatives revienne à zéro (30 minutes aussi).
Côté attribut, c’est lockoutTime qui change. Quand un admin déverrouille manuellement, lockoutTime est remis à 0.
Communication du mot de passe
Le nouveau mot de passe ne doit jamais être transmis par :
- mail non chiffré ;
- SMS ;
- chat d’entreprise non chiffré.
Bonnes pratiques : téléphone interne avec rappel sur un numéro déjà connu, remise en face-à-face si possible, ou portail SSPR (Self-Service Password Reset) pour les cas simples. C’est la posture demandée par les guides ANSSI sur la gestion des identités.
Topologie
L’architecture est la même que pour l’intervention précédente : un contrôleur de domaine virtualisé et mon poste d’admin sur le segment d’administration du lab.
| Équipement | Rôle |
|---|---|
| Poste d’admin Windows | Console ADUC, PowerShell |
| VM Windows Server 2022 (DC) | Contrôleur de domaine LAB.LOCAL |
Note
Comme dans l’article précédent, les captures sont issues d’une instance précédente du lab dont le domaine était nommé DEPANMOI.LAN. La procédure est identique sur l’instance courante (LAB.LOCAL).
Prérequis
- Le compte utilisateur Jean Dupont (
jean.dupont) déjà créé surLAB.LOCAL. - Un compte d’administration disposant des droits Reset Password sur le container
Users. - Console ADUC ou module PowerShell
ActiveDirectorydisponible.
Diagnostic préalable
Avant tout, je vérifie l’état réel du compte. Un utilisateur qui « n’arrive plus à se connecter » peut avoir trois causes : mot de passe oublié, compte verrouillé, compte désactivé. Le geste à faire n’est pas le même.
Get-ADUser -Identity "jean.dupont" -Properties LockedOut,Enabled,PasswordExpired,AccountLockoutTime,LastBadPasswordAttempt |
Format-List Name,Enabled,LockedOut,PasswordExpired,AccountLockoutTime,LastBadPasswordAttemptSortie :
Name : Jean Dupont
Enabled : True
LockedOut : True
PasswordExpired : False
AccountLockoutTime : 03/02/2025 14:12:08
LastBadPasswordAttempt : 03/02/2025 14:11:55Diagnostic : compte actif (Enabled: True), mais verrouillé (LockedOut: True) suite à des tentatives ratées rapprochées. Le mot de passe n’est pas expiré : l’utilisateur l’a probablement oublié et a tenté plusieurs combinaisons. Je dois donc déverrouiller ET réinitialiser, parce que le déverrouillage seul lui donnera 5 nouvelles tentatives avec un mot de passe qu’il ne se rappelle pas.
Réinitialisation via ADUC
Sur le DC, j’ouvre Utilisateurs et ordinateurs Active Directory, je localise Jean Dupont dans Users, clic droit → Réinitialiser le mot de passe.

Nouveau mot de passe : ●●●●●●●●●●●●●●
Confirmer le mot de passe : ●●●●●●●●●●●●●●
[X] L'utilisateur doit changer le mot de passe à la prochaine ouverture de session
État de verrouillage du compte sur ce contrôleur de domaine : Déverrouillé
[X] Déverrouiller le compte de l'utilisateurExplications ligne par ligne :
Nouveau mot de passe: mot de passe temporaire, qui doit respecter la politique de complexité du domaine. Je génère 14 caractères mixtes via mon gestionnaire de mots de passe : c’est plus sûr qu’un mot de passe « tapé au clavier » par habitude (Welcome2025!et autres dérivés sont les premiers testés en attaque).L'utilisateur doit changer le mot de passe à la prochaine ouverture de session: coché. Indispensable : le mot de passe que je tape passe par le ticket, par mon esprit, par la confirmation orale, il doit être éphémère.Déverrouiller le compte de l'utilisateur: coché. Sans ça, mon reset enregistre un nouveau hash mais le compte resteLockedOut: Truejusqu’à la fin de la fenêtre de verrouillage (30 minutes par défaut). Cocher la case remetlockoutTimeà 0 immédiatement.- L’indication
État de verrouillage : Déverrouilléqu’on voit sur la capture confirme que le déverrouillage a déjà été appliqué pendant que je remplissais le formulaire : ADUC met à jour cet indicateur en temps réel.
Je clique sur OK. La fenêtre se ferme, le mot de passe est remplacé. ADUC affiche un message de confirmation.
Vérification dans les propriétés du compte
Pour m’assurer que tout est cohérent, j’ouvre les Propriétés de Jean Dupont, onglet Compte.

Je vérifie que :
- la case Déverrouiller le compte n’est plus cochée (= compte n’est plus verrouillé) ;
- l’option L’utilisateur devra changer le mot de passe à la prochaine ouverture est bien cochée ;
- l’option Le mot de passe n’expire jamais reste décochée ;
- l’option Enregistrer le mot de passe en utilisant un chiffrement réversible reste décochée ;
- la date d’expiration du compte est inchangée (toujours fin avril 2026).
Réinitialisation via PowerShell
Pour scripter le geste, voici l’équivalent PowerShell.
# 1) Vérifier l'état du compte avant action
Get-ADUser -Identity "jean.dupont" -Properties LockedOut,Enabled,PasswordExpired |
Format-List Name,Enabled,LockedOut,PasswordExpired
# 2) Préparer le nouveau mot de passe (saisi de manière sécurisée)
$Nouveau = Read-Host -AsSecureString "Mot de passe temporaire"
# 3) Réinitialiser le mot de passe
Set-ADAccountPassword -Identity "jean.dupont" -NewPassword $Nouveau -Reset
# 4) Forcer le changement à la prochaine ouverture de session
Set-ADUser -Identity "jean.dupont" -ChangePasswordAtLogon $true
# 5) Déverrouiller le compte
Unlock-ADAccount -Identity "jean.dupont"
# 6) Vérifier l'état après action
Get-ADUser -Identity "jean.dupont" -Properties LockedOut,PasswordExpired,PasswordLastSet |
Format-List Name,LockedOut,PasswordExpired,PasswordLastSetExplications ligne par ligne :
Read-Host -AsSecureString: le mot de passe est saisi à l’invite et stocké enSecureString. Il n’apparaît jamais en clair dans l’historique PowerShell.Set-ADAccountPassword -Reset: le switch-Resetest crucial. Sans lui, la commande attend l’ancien mot de passe (cas du Change Password utilisateur). Avec, l’admin peut forcer le nouveau hash.Set-ADUser -ChangePasswordAtLogon $true: force le flagpwdLastSet=0. Équivalent à la case ADUC.Unlock-ADAccount: remetlockoutTimeà 0. Cmdlet idempotent : si le compte n’est pas verrouillé, ne fait rien.- Le diagnostic en étape 6 doit retourner
LockedOut: False,PasswordExpired: False, et unPasswordLastSetà vide (signal du flag change at next logon).
Communication du mot de passe
C’est la partie qui ne se voit pas dans les outils mais qui fait toute la différence.
| Étape | Action | Pourquoi |
|---|---|---|
| 1. Vérifier l’identité | Rappel sur le numéro interne ou demande de confirmation par le manager | Empêche le social engineering (fausse demande d’un soi-disant utilisateur) |
| 2. Annoncer le mot de passe à voix | « Ton mot de passe temporaire est T-r-a-n-s... » avec épellation | Évite les confusions L/I, O/0, S/5 |
| 3. Faire répéter | « Tu peux me l’épeler en retour ? » | Vérifie que l’utilisateur l’a bien noté |
| 4. Rappeler la suite | « Tu devras le changer dès ta prochaine connexion » | Posture les attentes côté utilisateur |
| 5. Documenter le ticket | « Reset effectué à 14h32, déverrouillage OK, communication par téléphone interne » | Traçabilité dans GLPI / outil de ticket |
Prudence
Ne jamais transmettre le mot de passe par mail non chiffré, par SMS, par chat (Teams/Slack) ou en le laissant dans un post-it. Si le canal de communication n’est pas sûr, on ne le transmet pas — on attend que l’utilisateur passe sur place ou on bascule sur un portail SSPR.
Problèmes rencontrés et solutions
| Symptôme | Cause | Correction |
|---|---|---|
| Le mot de passe est refusé par ADUC | Politique de complexité non respectée (longueur, catégories) | Choisir un mot de passe plus fort ou ajuster la Default Domain Policy |
| L’utilisateur reste verrouillé après le reset | Case « Déverrouiller le compte » non cochée | Re-cocher la case ou exécuter Unlock-ADAccount -Identity jean.dupont |
| L’utilisateur peut se connecter sans qu’on lui demande de changer | pwdLastSet non remis à 0 | Cocher l’option dans ADUC ou exécuter Set-ADUser -ChangePasswordAtLogon $true |
| Le reset ne se réplique pas immédiatement sur les autres DC | Réplication AD non instantanée (toutes les 15 min par défaut) | Forcer la réplication avec repadmin /syncall ou attendre la convergence |
Compétences du bloc 1 mobilisées
| Compétence officielle | Mobilisation concrète |
|---|---|
| Répondre aux incidents et aux demandes d’assistance et d’évolution | Traitement complet d’un ticket type « mot de passe oublié » : diagnostic, reset, déverrouillage, communication, traçabilité. |
| Mettre en place et vérifier les niveaux d’habilitation associés à un service | Vérification que le compte conserve ses droits initiaux après reset (date d’expiration, options non modifiées). |
| Vérifier le respect des règles d’utilisation des ressources numériques | Application stricte de la politique de communication des mots de passe (canal sûr, épellation, traçabilité). |
| Exploiter des référentiels, normes et standards adoptés par le prestataire informatique | Procédure conforme aux guides ANSSI sur la gestion des identités et l’authentification. |
Bilan
L’opération en elle-même est triviale en quelques clics, mais c’est l’enchaînement qui fait la qualité du support : vérification de l’identité → diagnostic réel (verrouillé ? désactivé ? mot de passe expiré ?) → reset + déverrouillage cohérents → communication sûre → traçabilité. Manquer une étape (typique : réinitialiser sans déverrouiller, ou transmettre le mot de passe par mail) transforme un ticket de 3 minutes en incident de sécurité potentiel.
Trois points retenus pour mes prochains tickets :
- toujours faire le diagnostic avant le geste — réinitialiser un mot de passe sur un compte qui était juste verrouillé crée un mot de passe inconnu dont l’utilisateur n’a pas besoin ;
- la version PowerShell est plus rapide à enchaîner et laisse une trace dans l’historique, ce qui aide pour la documentation du ticket ;
- la communication du mot de passe est une compétence à part entière, pas un détail.
Sources
- Microsoft Learn — Set-ADAccountPassword , Microsoft.
- Microsoft Learn — Unlock-ADAccount , Microsoft.
- Microsoft Learn — Account Lockout Policy , Microsoft.
- ANSSI — Recommandations relatives à l’authentification multifacteur et aux mots de passe , ANSSI.
- ANSSI — Recommandations de sécurité relatives à Active Directory , ANSSI.