Bonjour,
Je développe un Intranet [ASP.Net : C#]et souhaite me connecter à l'Active Directory du réseau d'entreprise.
Voici la syntaxe :
Et l'appel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 StringCollection groups = new StringCollection(); try { DirectoryEntry obEntry = new DirectoryEntry(""); DirectorySearcher srch = new DirectorySearcher(obEntry,"(sAMAccountName=" + strUser + ")"); SearchResult res = srch.FindOne(); if (null != res) { DirectoryEntry obUser = new DirectoryEntry(res.Path); // Invoke Groups method. object obGroups = obUser.Invoke("Groups"); foreach (object ob in (IEnumerable)obGroups) { // Create object for each group. DirectoryEntry obGpEntry = new DirectoryEntry(ob); groups.Add(obGpEntry.Name); } } } catch (Exception ex) { string sError = ex.Message; } return groups;
Ce code marche parfaitement sur une application Windows locale mais ne fonctionne pas sur un server Web local (Asp.Net)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 StringCollection groups = this.GetUserGroupMembership(p_sUserName); foreach (string gp in groups) { if (gp.IndexOf("GroupeAD1") >= 0) return "ADMIN"; if (gp.IndexOf("GroupeAD2") >= 0) return "USER"; }
Pour l'application Windows, le DirectoryEntry prend la racine du domaine par défaut (chaine vide en paramètre lors de son instanciation)
Pour l'application Web, je pars en exception :
Je pense qu"il s'agit d'un prorblème lié aux droits utilisateurs quant à l'accès en lecture à l'AD (le User ASPNET n'aurait donc pas ces accès ?)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2"Le domaine spécifié n'existe pas ou n'a pas pu être contacté"
Quelles solutions pour régler mon problème ?
Merci de votre aide !
A+
Partager