2010-08-22 12 views
2

J'essaie d'authentifier les utilisateurs dans Active Directory avec les bibliothèques Novell.Directory.Ldap trouvées dans Mono. Je sais qu'il y a de meilleurs moyens que ci-dessous, mais étant donné que je suis confiné à Mono, ce sont les seules routines supportées du mieux que je peux voir. En utilisant les bibliothèques .NET, je peux authentifier un utilisateur avec son samAccountName.Bibliothèques Active Directory et LDAP

using (DirectoryEntry de = new DirectoryEntry()) 
       { 
        de.Username = username; 
        de.Password = password; 
        de.Path = string.Format("LDAP://{0}/{1}", ADHostname, DefaultNamingContext); 
        de.AuthenticationType = AuthenticationTypes.Secure; 

        using (DirectorySearcher deSearch = new DirectorySearcher()) 
        { 
         deSearch.SearchRoot = de; 
         deSearch.PropertiesToLoad.Add("cn"); 
         deSearch.Filter = "(&(objectCatagory=person))"; 

         deSearch.FindOne(); 
        } 
       } 

mais cela échoue avec des informations d'identification non valides s'il s'exécute en mono. La seule façon de le faire fonctionner est de spécifier le nom UPN pour le nom d'utilisateur:

de.Username = "[email protected]";

Le problème est que UPN n'est pas un attribut requis pour AD. Alors, comment puis-je authentifier un utilisateur avec juste son nom d'utilisateur?

Je vois un message sur une façon de le faire: Authenticating user using LDAP from PHP

Mais, c'est un problème de poule et l'œuf. Comment puis-je lier pour rechercher le DN des utilisateurs afin que je puisse lier, si je ne peux pas lier comme un utilisateur authentifié pour commencer.

Nous vous remercions de votre aide.

Répondre

0

Habituellement, vous obtenez un compte pour votre application pour permettre la recherche d'autres DN d'utilisateur. Traditionnellement, cela a été fait en utilisant une liaison anonyme, mais de nos jours, cela est généralement bloqué pour des raisons de sécurité.

Obtenez donc un compte de service avec un DN et un mot de passe connus. Liez-le en tant que compte de service, effectuez votre recherche, puis liez le DN des utilisateurs que vous avez trouvé via la recherche.

+0

Cela a du sens. J'essayais de le faire avec le moins d'implication possible de la part de l'administrateur, mais j'imagine que le fait de demander le DN complet pour le compte de service n'est pas une grosse affaire. Merci. –