LDAP / AD-Filter - "Objektklasse nicht gleich" funktioniert nicht

7

Ich arbeite mit LDAP Active Directory und versuche alle Benutzer aufzulisten. Ich habe diesen Filter, der perfekt funktioniert:

%Vor%

Leider haben wir auch einen Computer und andere Geräte in AD mit der Objektklasse "user", also mit dem vorherigen Filter habe ich alle Benutzer, Computer, Geräte, Räume, etc.

Diese Computer und Geräte haben auch eine Objektklasse "Computer", daher muss ich den Filter mit objectclass!="computer" erweitern, um nur echte Benutzer aufzulisten. Bis jetzt hatte ich diese Filter ausprobiert, keiner von ihnen funktioniert (keine Daten zurückgegeben!):

%Vor%

(echte Benutzer haben nicht die Objektklasse "Computer").

Ich arbeite mit der Implementierung von PHP ldap und verwende eine ldap_search() Methode.

Die Syntax "nicht gleich" wurde z.B. hier: Ссылка oder hier: Ссылка

Vielleicht könnte ich versuchen, Benutzer zu filtern, wo (! CN = Computer) in DN, aber zuerst möchte ich filtern (! objectclass = Computer), wie es für mich logischer ist.

Was ist die korrekte Syntax für objectclass!="computer" Ausdruck?

    
shadyyx 10.03.2011, 17:14
quelle

2 Antworten

18

Im Gegensatz zu dem ersten Link , den Sie angegeben haben, (!objectclass=computer) ist kein gültiger Filterausdruck. Es sollte (!(objectclass=computer)) sein. Siehe RFC 2254:

  

filter ::="(" filtercomp ")"

     

nicht ::="!" Filter

Also sollte dein Filter

sein %Vor%     
EJP 11.03.2011, 08:56
quelle
3

Wenn Sie versuchen, alle Benutzer zu erhalten, können Sie Folgendes tun:

%Vor%

Es sieht so aus, als ob Sie versuchen, Benutzer zu erhalten, die Mitglieder bestimmter Gruppen sind und einen bestimmten Namen haben (richtig?). Wenn ja, könnten Sie tun:

%Vor%

Diese arbeiten an meinem Ende (Sie müssen möglicherweise Whitespace in Ihrem PHP-Code entfernen)

    
dearlbry 10.03.2011 17:42
quelle