2010-08-01 6 views
2

Nous utilisons pour authentifier l'utilisateur sur AD en utilisant le constructeur DirectoryEntry suivant:authentification LDAP à l'aide DirectoryEntry

new DirectoryEntry(path, domainName + "\\" + UserName, Password); 

Il utilise pour fonctionner correctement jusqu'à ce que le contrôleur de domaine a été changé.

Maintenant, pour le faire fonctionner, nous devons utiliser:

new DirectoryEntry(path, UserName, Password); 

Quelqu'un peut-il expliquer la différence s'il vous plaît et pourquoi la deuxième méthode fonctionne maintenant et le premier ne fonctionne pas?

Remarque: Je ne suis pas sûr, mais je pense que le niveau fonctionnel du domaine a été porté à Server 2008 à partir du serveur 2003. Cela fait-il une différence?

Répondre

5

Je ne sais pas exactement pourquoi cela a déjà travaillé :-) et donc je ne peux pas vraiment expliquer pourquoi l'autre option fonctionne maintenant ....

Si vous travaillez sur .NET 3.5, vous pouvez utiliser le System.DirectoryServices.AccountManagement espace de noms et facilement vérifier vos informations d'identification:

// create a "principal context" - e.g. your domain (could be machine, too) 
using(PrincipalContext pc = new PrincipalContext(ContextType.Domain, "YOURDOMAIN")) 
{ 
    // validate the credentials 
    bool isValid = pc.ValidateCredentials("myuser", "mypassword") 
} 

il est simple, il est fiable, il est 100% C# code managé sur votre fin - que pouvez-vous demander? :-)

+0

Merci pour la réponse raison iam demander de l'aide est le code est sous envoirment de production et il existe différentes AD sur différents deployments.We doivent comprendre quand nous avons besoin de nom de domaine avec l'utilisateur et quand nous ne avez pas besoin il. – Buzz

+1

@buzz: typiquement, je suppose qu'aucun domaine - puisque le domaine fait déjà déjà partie du chemin LDAP. Aussi: typiquement, j'utiliserais un nom LDAP, par ex. le nom distinctif 'CN = Buzz Aldrin, CN = Utilisateurs, DC = VotreDomaine, DC = com' plutôt qu'un simple nom d'utilisateur Windows ... –

+0

Merci, il était utile, si quelqu'un a explnation pour le scénario existant, il sera utile parce que pour le moment, il n'est pas facile de mettre à jour la base de code, nous essayons d'identifier les changements sur AD qui pourraient conduire à ce résultat. – Buzz

1

En règle générale, le chemin utilisé pour ce suivre ce format est

DirectoryEntry("LDAP//:domainName"); 

domainName peut être soit une URL comme: my.ldapDomain.com

ou distinguishedName comme: DC = Mon , DC = ldapDomain, DC = COM

Je crains que nous ne puissions pas vous donner plus d'informations sur la raison pour laquelle votre code a fonctionné avant et pas maintenant, puisque nous ne pouvons pas voir le contenu de la variable "chemin" et " domainName "utilisé dans votre code.

S'il vous plaît fournir plus d'informations

Questions connexes