2 votes

Connexion Active Directory - exception DirectoryEntry inconsistante

Je dois valider l'utilisateur LDAP en vérifiant s'il existe un tel nom d'utilisateur dans le domaine spécifié. Pour cela, j'utilise ce code -

DirectoryEntry entry = new DirectoryEntry("LDAP://" + strDomainController);
DirectorySearcher searcher = new DirectorySearcher(entry);
searcher.Filter = "SAMAccountName=" + strUserName;
SearchResult result = searcher.FindOne();
return (result != null) ? true : false;

Il s'agit d'une méthode dans une bibliothèque de classes que j'avais l'intention de référencer et d'utiliser partout où j'ai besoin de cette fonctionnalité dans mon projet.

Pour tester cela, j'ai créé une application de test simple. Le test se déroule comme suit

Console.WriteLine(MyClassLib.MyValidateUserMethod("UserName", "Domain",ref strError).ToString());

Le problème auquel je suis confronté est que cela fonctionne bien lorsque je le teste avec ma testapp, mais dans mon projet, lorsque j'essaie d'utiliser la même méthode avec les mêmes informations d'identification, le message suivant s'affiche DirectoryEntry lance un "System.DirectoryServices.DirectoryServicesCOMException" et l'exception search.Filter échoue et lance ex = {"Logon failure : unknown user name or bad password. \r\n "} exception.

J'ai essayé l'usurpation d'identité mais cela ne m'aide pas. D'une manière ou d'une autre, la même méthode fonctionne bien dans mytestapp et ne fonctionne pas dans mon projet. Ces deux applications sont dans ma machine de développement locale. Que me manque-t-il ? Avez-vous des idées ?

1voto

Pavanred Points 2650

J'ai essayé presque toutes les solutions possibles que j'ai pu trouver sur tous les fils de discussion de ce type, mais je n'ai toujours pas réussi à résoudre le problème.

J'ai essayé de tout refaire et ça a marché. Je pense que la raison pour laquelle cela a fonctionné avec mon application de test et pas avec mon projet est que mon projet était stocké dans un emplacement réseau et que mon application de test était stockée sur le disque dur de mon PC.

Il a commencé à fonctionner correctement avec mon projet lorsque je l'ai copié sur le disque dur de mon PC. Je pense qu'étant donné que le projet se trouvait sur le réseau, il n'y avait peut-être pas assez de permissions accordées pour une validation LDAP.

0voto

SqlRyan Points 14999

Êtes-vous sûr que votre application de test et votre application réelle sont exécutées sous le même utilisateur, et qu'elles ont donc les mêmes permissions dans AD ? Bien que les exceptions lancées par les objets DirectoryEntry soient difficiles à résoudre, c'est la première chose que je vérifierais. De quel type de projet s'agit-il - application web ou application de bureau ? S'il s'agit d'une application Web, l'utilisateur qui exécute le pool d'applications ne dispose peut-être pas des autorisations nécessaires.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X