Autor Thema: C# LDAP Query gegen Domino Directory  (Gelesen 6287 mal)

Offline Fussel1979

  • Frischling
  • *
  • Beiträge: 3
C# LDAP Query gegen Domino Directory
« am: 23.01.12 - 17:05:58 »
Hallo zusammen,

ich bin seit ca. einer Woche auf der Suche nach einer Lösung, wie ich mittels C# eine LDAP Abfrage an das Domino Directory absetzen kann ohne irgendeine Form der Notesintegration (Interop/Notes Client) zu bedienen.

In VBS habe ich das am laufen tue mich nur irgendwie sehr schwer damit, das in C# zu realisieren, weiß aber nicht, wo's hängt.

In VBS sieht das ganze bei mir so aus und funktioniert:

Code
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
 
objCommand.CommandText = "SELECT * FROM 'LDAP://192.168.1.2:389' WHERE objectClass='dominoPerson'"
Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst
Do Until objRecordSet.EOF
Set objUser = GetObject(objRecordSet.Fields("ADsPath").Value)
Debug.Print objUser.Name
objRecordSet.MoveNext
Loop

Es geht konkret dadrum, das ich in einem C# Projekt einen übergebenen Namen dahingehend überprüfen möchte, ob es einen entsprechenden User im AD und im Domino Dir. gibt oder nicht. Der AD Part ist garkein Problem und funktioniert, nur der Notespart in C# macht mir massiv Kopfzerbrechen, aber vielleicht stehe ich auch einfach nur auf dem Schlauch.

Bisher habe ich C# folgendes für den Notespart:
Code
            DirectorySearcher search = new DirectorySearcher();

            search.SearchRoot = new DirectoryEntry("LDAP://192.168.1.2:389");
            search.Filter = string.Format("(&(objectclass=dominoPerson)(cn=" + sUsername + "))");
            search.PropertiesToLoad.Add("cn");
            SearchResult SearchResult = search.FindOne();

Ergebnis ist ein "Protocol error".

Kann mir jemand sagen was ich falsch mache?!

Vielen Dank & Gruß,
Markus

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: C# LDAP Query gegen Domino Directory
« Antwort #1 am: 23.01.12 - 17:20:59 »
Mache mal folgendes:
Öffne mal einen Commandprompt und gehe ins Notes- Verzeichnis des Clients.
Gib dann folgendes ein:

ldapsearch.exe -h 192.168.1.2 "(&(objectClass=dominoPerson)(cn=Tido Test))" cn

Was kommt zurück?
Wenn das funktioniert, dann liegt Dein Fehler irgendwo im C#, und Du musst einen C#- Spezialisten fragen. Wenn das nicht klappt, dann poste mal die Fehlermeldung hier, dann hat es was mit der Domino- Konfiguration zu tun...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline Fussel1979

  • Frischling
  • *
  • Beiträge: 3
Re: C# LDAP Query gegen Domino Directory
« Antwort #3 am: 23.01.12 - 19:20:40 »
Hallo zusammen,

danke für Eure Antworten.

Der Fehler liegt ziemlich sicher im verwendeten C# Quelltext, da mein VB Script tadellos funktioniert.

LDAPSearch mit entsprechenden Parametern liefert ebenfalls ergebnisse.

Das Abfragen des ADS per LDAP funktioniert in C# problemlos nach gleichem Schema bekomme ich aber vom Domino Directory keine Daten, sondern nur einen Fehler.

Da nur das Abfragen des Domino Dirs per LDAP nicht funktioniert, dachte ich, es gäbe irgendwelche Notesspezifika, die ich nicht kenne, die man aber beim Query mit bedenken muss, deswegen habe ich überhaupt hier im Forum den Thread eröffnet.

Ich könnte natürlich auch LDAPSearch über den Quelltext ansprechen oder das VBS, aber eine native C# Variante wäre mir lieber.

Vg,
Markus

Offline Fussel1979

  • Frischling
  • *
  • Beiträge: 3
Re: C# LDAP Query gegen Domino Directory
« Antwort #4 am: 23.01.12 - 19:35:50 »
Hallo zusammen,

ich nochmal, ich gebe dann mal selber die Antwort auf meine Frage, habe es gerade herausgefunden.

Notes will wohl - anders als das AD - zwingend die Angabe der Authentifizierungsmethode.

Von daher muss das Query so aussehen:

Code
search.SearchRoot = new DirectoryEntry("LDAP://192.168.1.2:389",null,null,AuthenticationTypes.Anonymous);

Thread kann dann zu :)

Danke & Gruß,
Markus

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz