PROJET AUTOBLOG


IT-Connect

Site original : IT-Connect

⇐ retour index

Tester l’authentification d’un compte AD avec PowerShell

mercredi 9 mars 2022 à 15:00

I. Présentation

Dans ce tutoriel, nous allons voir comment tester l'authentification d'un compte AD avec PowerShell, afin de vérifier si un couple "nom d'utilisateur" et "mot de passe" est correct, sans avoir à s'authentifier sur une machine.

Prenons l'exemple suivant : vous avez en votre possession un compte utilisateur et son mot de passe, et vous avez besoin de savoir si les informations sont correctes. Plutôt que d'ouvrir une session en local sur une machine du domaine avec le compte en question, pour vérifier s'il est valide ou non, on peut s'appuyer sur PowerShell. Ce sera surement plus rapide puisque l'on a le résultat en direct, sans avoir à attendre que la session s'ouvre, etc... Vous voyez l'idée.

II. Tester un compte AD avec PowerShell

Pour atteindre notre objectif, nous ne pouvons pas utiliser un cmdlet prêt à l'emploi du module Active Directory, car il n'en existe pas aujourd'hui. Ce n'est pas très grave, nous allons créer un objet spécifique et créer notre propre fonction. Plus précisément, nous allons créer un objet de type "DirectoryServices.DirectoryEntry" qui permet de récupérer différentes informations auprès d'un annuaire Active Directory. Notre objectif, c'est simple de voir si les informations d'authentifications sont correctes.

Nous avons besoin de définir 3 arguments pour créer cet objet :

Si l'on parvient à créer notre objet, c'est que l'authentification a réussi, et donc que les informations sont bonnes. Dans le cas où ce n'est pas correct, la création de l'objet retournera le message "L'exception suivante s'est produite lors de la récupération du membre « distinguishedName » : « Le nom d’utilisateur ou le mot de passe est incorrect.". Nous allons récupérer la base DN du domaine et si elle n'est pas nulle, c'est que l'on a pu s'authentifier et récupérer la valeur.

Appelons cette fonction "Test-ADUserAuthentication" (ou "Test-ADAuthentication" comme on peut trouver sur le net). Cette fonction va avoir deux paramètres obligatoires pour le nom d'utilisateur et le mot de passe. Ce qui donne :

Function Test-ADUserAuthentication {
    param(
        [parameter(Mandatory=$true)]
        [string]$ADUserLogin,
        [parameter(Mandatory=$true)]
        [string]$ADUserPassword)

        ((New-Object DirectoryServices.DirectoryEntry -ArgumentList "",$ADUserLogin,$ADUserPassword).psbase.name) -ne $null
}

Si la fonction retourne "True" c'est que les informations sont bonnes, sinon elle retournera "False". Il ne reste plus qu'à définir les deux variables :

$ADUserLogin = "NomUtilisateur"
$ADUserPassword = "MotDePasse"

Puis, on appelle notre fonction :

Test-ADUserAuthentication -ADUserLogin $ADUserLogin -ADUserPassword $ADUserPassword

Si l'on préfère avoir une jolie phrase, ou effectuer une action dans le cas où le mot de passe est bon/pas bon, on peut utiliser une condition if :

if(Test-ADUserAuthentication -ADUserLogin $ADUserLogin -ADUserPassword $ADUserPassword){
     Write-Host "Le compte est valide !" -ForegroundColor Green
}else{
     Write-Host "Le compte est invalide !" -ForegroundColor Red
}

Voici un exemple :

Tester authentification AD avec PowerShell

Il faut savoir que si l'authentification échoue, cela peut être dû à plusieurs choses : l'identifiant ou le mot de passe est incorrect (ou les deux), le compte AD est désactivé, le compte AD est verrouillé, ou l'utilisateur doit changer son mot de passe à la prochaine connexion.

Notre fonction est prête, vous n'avez plus qu'à l'utiliser au besoin ! 🙂

Je vous rappelle que le cours sur l'Administration de l'Active Directory avec PowerShell est toujours disponible !

The post Tester l’authentification d’un compte AD avec PowerShell first appeared on IT-Connect.