LDAP-Verzeichniseintrag in .Net - funktioniert nicht mit OU = Benutzer

7

Ich habe den folgenden Code (C #):

(Optimiert von: Ссылка )

%Vor%

Die rootDSE wird korrekt erstellt, der Benutzer userDSE ist jedoch unbrauchbar und löst die Ausnahme "Es gibt kein solches Objekt auf dem Server aus" aus, wenn ich versuche, sie zu verwenden.

Die LDAP-Zeichenfolgen lauten wie folgt:

  

Stamm: LDAP: // DC = Firma, DC = lokal

     

Benutzer: LDAP: // OU = Benutzer, DC = Firma, DC = lokal

Ich laufe auf Vista als Admin, aber das muss auch auf XP (Admin) funktionieren.

Ich bin neu in LDAP und Directory Management, also stolpere ich hier im Dunkeln herum. Irgendwelche Gedanken? Auch - alle Artikel, die man verlinkt, könnten mir einen Einblick geben, wie alles funktioniert, wäre zu begrüßen.

    
Malachi 10.09.2009, 12:31
quelle

3 Antworten

12

Das erste, was ich als Test versuchen würde, ist, den gewünschten Pfad hart zu codieren, wenn Sie einen Verzeichniseintrag wie folgt erstellen:

%Vor%

Dies sagt Ihnen ziemlich schnell, ob dies ein tatsächlicher Pfad in Ihrem Active Directory ist. Ich weiß nicht, wie Ihre AD aussieht, also kann ich Ihnen nicht sagen, ob dies ein gültiger Pfad ist oder nicht. Wenn dieser Pfad korrekt ist, sollten Sie unter Ihrem Active Directory-Benutzer und Computer-MMC-Plugin Ihre Stammdomäne und einen OU-Ordner unter dem Stamm Benutzer haben.

Pfade werden in AD rückwärts generiert, wenn sich Ihr Benutzerordner unter einer anderen Organisationseinheit als der Stamm befindet, als es

wäre %Vor%

So würde Ihr AD-Schema aussehen:

%Vor%

Ein großartiger Artikel zur Verwaltung von Active Directory in .NET:

HowTo: (fast) alles in Active Directory über C #

Sie sollten auch die System.DirectoryServices, System.DirectoryServices.ActiveDirectory und die System.DirectoryServices.AccountManagement-Namespaces recherchieren, die im .NET 3.5 Framework bereitgestellt werden. Ich glaube, dass System.DirectoryServices und ActiveDirctory-Namespaces verfügbar waren, die in .Net 1.1 anstarrten, und AccountManagement wurde in .Net 3.5 eingeführt.

Microsoft-Dokumentation - Viele gute Links zur Verwendung des Namensraums

Nachtrag:

Um tatsächlich einen Benutzer in AD zu finden, werden Sie folgendes tun wollen:

%Vor%     
Scott Lance 10.09.2009 12:59
quelle
6

Dies mag albern und dumm erscheinen, aber die Standardbaumstruktur in Active Directory ist nicht OU = Benutzer , dc = Domäne, dc = com, sondern cn = Benutzer , dc = Domäne, dc = com (Beachten Sie die CN = nicht die OU = für Benutzer.

Es scheint dumm, da ein Container-Objekt (objectClass von cn) in AD kein Empfänger von Gruppenrichtlinien sein kann, aber aus Gründen, die ich nicht verstehe, ist das der Standard. (Tatsächlich verstehe ich das, weil Containment für einen CN einer NT-Domäne ähnlicher ist als OU)

Bekommt fast jeden, den ich treffe, beim ersten Versuch LDAP zu binden / zu AD zu binden.

    
geoffc 10.09.2009 15:03
quelle
2

Wie Geoffc richtig erwähnt, ist in "Active Directory" der "Benutzer" unter der Domäne ein Container-Objekt und kein Objekt der Organisationseinheit. Dies führt zu einem völlig anderen LDAP-Pfad, weshalb Sie die Fehlermeldung erhalten.

Probieren Sie den folgenden Code aus und senden Sie ihn, wenn er Ihr Problem behebt:

%Vor%     
Joshua 22.06.2010 19:31
quelle

Tags und Links