Active Directory tient la shop
Sur mon mandat, y’a une affaire que j’avais jamais vraiment regardée avant: l’identité. Qui est connecté, dans quel groupe, avec quelles permissions. Tant que ça marche, personne y pense. Le jour où ça accroche, tout le monde appelle. Pis dans la shop où je travaille, c’est Active Directory qui tient ça ensemble.
Mon déclic est venu d’un bogue plate. Une utilisatrice n’arrivait pas à ouvrir un module de l’application. Le code marchait pour moi, marchait pour mon collègue, mais pas pour elle. Pas une erreur de code. Une erreur de groupe.
Mon application fait confiance à AD
L’application interne ne gère pas ses propres mots de passe. Elle se fie à Windows, donc à Active Directory, pour savoir qui tu es. Après, c’est l’appartenance à un groupe qui décide ce que tu peux voir. Le module bloqué demandait le groupe APP_Compta, pis l’utilisatrice était juste dans APP_Lecture.
La vérification, c’est pas compliqué, mais faut savoir où regarder.
Imports System.Security.Principal
Public Function EstDansGroupe(nomGroupe As String) As Boolean
Dim identite As WindowsIdentity = WindowsIdentity.GetCurrent()
Dim principal As New WindowsPrincipal(identite)
Return principal.IsInRole("DOMAINE\" & nomGroupe)
End Function
Pis dans le formulaire, ça donne juste ça:
If Not EstDansGroupe("APP_Compta") Then
btnComptabilite.Enabled = False
End If
Le code est court. Le piège, lui, est ailleurs: dans qui ajoute le monde dans quel groupe, pis quand. Ça, c’est pas du code, c’est de l’organisation.
La chaîne de confiance
flowchart LR
A[Utilisateur Windows] --> B[Active Directory<br/>authentifie]
B --> C[Groupes de l'usager]
C --> D{Membre du<br/>bon groupe?}
D -->|Oui| E[Accès au module]
D -->|Non| F[Bouton désactivé]
Quand j’ai dessiné ça au support, le bogue est devenu évident pour tout le monde: c’était pas l’application le problème, c’était le maillon « bon groupe ». Cinq minutes plus tard, l’utilisatrice était dans APP_Compta pis ça roulait.
Ce que je retiens
Active Directory, du terrain, c’est moins une techno qu’une dépendance. Mes applications reposent dessus sans le dire fort. Ça m’a appris à toujours me demander, avant de chercher un bogue dans mon code: est-ce que le monde est dans le bon groupe? Souvent, la réponse est là. Pas très glamour comme constat, mais ça m’a sauvé ben des heures de débogage pour rien.