Laden...

[gelöst] LDAP Pfad auf Gültigkeit prüfen

5 Antworten
2,017 Aufrufe
Letzter Beitrag: vor 15 Jahren
[gelöst] LDAP Pfad auf Gültigkeit prüfen

Hi!

Ich habe eine Aufgabenstellung bei der ich mehrere ActiveDirectory Domains bekomme und dann eine Suche ausführen muss (in allen Domänen, in nur einer...).
Das suchen selbst funktioniert!

Mein Problem ist es, wie ich den Pfad den ich bekomme authentifizieren kann. D.h. wie ich sicher stellen kann, dass es diese Domäne auch wirklich gibt.

Der Code ist wahrscheinlich nichts besonderes...


var entry = new DirectoryEntry(path);

var searcher = new DirectorySearcher(entry);
searcher.SearchScope = SearchScope.Subtree;
searcher.ReferralChasing = ReferralChasingOption.All;

 searcher.Filter = "(&(&(&(&(objectClass=user)(samaccountname=" + _username + "))(givenName=" + _fname +
                                  "))(sn=" + _lname + "))(mail=" + _email + "))";

var results = searcher.FindAll();

foreach (SearchResult res in results)
{
      //tu was damit
}

Was mir eingefallen wäre:
Wenn der Pfad ungültig ist, werden div. DirectoryEntry-Attribute nicht geladen. Dh man könnte z.B. adsObject ansprechen und bei einer Exception weiß man das der Pfad ungültig war.
Aber gibt es da keine bessere Lösung?

Danke & LG
empty

ich mach das so:


private bool TryADLogin (Authentication a)
      {
      PrincipalContext pc = new PrincipalContext (ContextType.Domain, "Domänenname");
      bool isValid = pc.ValidateCredentials (a.Username, a.Password);
      return isValid;
      }

ist die Domäne nicht vorhanden, so kracht es.

Das ist auf jedenfall wesentlich einfacher als alles andere was ich für einen AD login gesehen habe =)

Aber leider nicht was ich brauche...
Ich will wirklich nur überprüfen ob der angegeben Pfad existiert bevor ich in eine Exception laufe (wie gesagt bis jetzt fange ich alles mit try/catch ab, aber da muss es doch noch eine sauberere Lösung geben...)

Hab was gefunden...

DirectoryEntry.Exists("path")

So einfach kann es sein -.-

Danke trotzdem!

Super...das interessiert mich auch. dann kann ich mein try catch auch entfernen (im code noch nicht zu sehen).