Categories: C#Windows

[c#] Comment obtenir la liste des groupes de sécurité de l’active directory?

Comment obtenir la liste des groupes de sécurité auquel appartient un compte de l’active directory?

Le but du script ci dessous est de lister les groupes de sécurité de l’active directory auxquels appartient un utilisateur Windows.

!!! Attention cette méthode permet de lister uniquement la liste des groupes de sécurité.
Les groupes de distribution eux ne sont pas listés.



Groupe de sécurité active directory
//Sélection du compte
WindowsIdentity windowsIdentity = new WindowsIdentity("prenom.nom");

//Obtient la liste des groupes auquel appartient le compte
IdentityReferenceCollection mesref = windowsIdentity.Groups.Translate(typeof(NTAccount)); 
foreach (var item in mesref)
{
      textBox1.Text += "\r\n"+item.Value;
}
        
//Permet  de vérifier si le compte fait parti d'un groupe spécifique
WindowsPrincipal wp = new WindowsPrincipal(windowsIdentity);
textBox1.Text += "\r\n appartient au groupe informatique "+  wp.IsInRole("informatique").ToString();
textBox1.Text += "\r\n appartient au groupe utilisateurs "+ wp.IsInRole("utilisateurs").ToString();
textBox1.Text += "\r\n appartient au groupe test "+ wp.IsInRole("test").ToString();

WindowsIdentity représente un utilisateur Windows de l’AD
IdentityReferenceCollection est une collection d’identité (compte utilisateur ou compte de groupe)
WindowsPrincipal classe permettant de vérifier l’appartenance a un groupe d’un utilisateur

windowsIdentity.Groups.Translate(typeof(NTAccount));
Cette ligne de code permet de traduire en langage humain le nom du groupe.

Pour aller plus loin, quelques méthodes intéressantes de windowsIdentity.

  • WindowsIdentity.GetCurrent();
    -> retourne un objet WindowsIdentity contenant l’utilisateur actuellement connecté à Windows
  • WindowsIdentity.GetCurrent().IsAuthenticated;
    -> retourne un booléen indiquant si l’utilisateur est actuellement connecte à Windows.
  • WindowsIdentity.GetCurrent().Name;
    -> retourne un string contenant le nom de connexion Windows de l’utilisateur
  • WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(« informatique »);
    -> retourne un booléen indiquant si le compte sélectionné appartient à un groupe spécifique.

Vous pouvez consulter la Class WindowsIdentity sur MSDN



Si des articles complémentaires sur C# vous intéresse je vous conseille de lire


Point d’intérêt de cet article : Csharp, sécurité, AD.

adminArnaud

Recent Posts

Joyeux Noel 2024, bonnes fêtes de fin d’année

Voilà 10 ans que je n'avais pas écrit un petit texte pour souhaiter un joyeux… Read More

4 mois ago

Fin des vacances d’halloween (1er novembre), bon retour en classe

Cela faisait un petit moment que je n'avais pas créé de billets sur ce blog.… Read More

6 mois ago

Agile | L’importance d’écrire des tâches pour une User Story

Explorez l'importance des user stories dans la méthode Agile à travers une vidéo humoristique qui… Read More

5 ans ago

[Actu] Printemps des poètes

Parce que, contrairement à ce que l'on pourrait penser ce soir qu'il pleut des cordes,… Read More

6 ans ago

[Actu] Élections présidentielles 2017

Un peu d’humour en attendant le résultat des élections présidentielles françaises. Read More

8 ans ago

[Linux] Activer/Désactiver l’UTC en ligne de commande

Si vous n'avez pas accès à l'interface graphique de votre Linux, vous pouvez modifier l'horloge… Read More

9 ans ago