Bonjour,

Je développe un Intranet [ASP.Net : C#]et souhaite me connecter à l'Active Directory du réseau d'entreprise.

Voici la syntaxe :
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;
Et l'appel :

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";
				}
Ce code marche parfaitement sur une application Windows locale mais ne fonctionne pas sur un server Web local (Asp.Net)

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 :
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é"
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 ?)

Quelles solutions pour régler mon problème ?

Merci de votre aide !
A+