2016-04-12 9 views
1

Ich benutze Feder ldaptemplate. Ich versuche, Rollen aus meiner Gruppe zu übernehmen. Schema ist wie folgt.ldap finden Objekt nach Gruppenmitglied

ou=roles,cn=admin 
member cn=key1,ou=Keys 
member cn=key2,ou=keys 

ou=roles,cn=user 
member cn=key3,ou=Keys 
member cn=key2,ou=keys 

Ich möchte Rollen, um herauszufinden, deren Mitglied cn = key2.

Meine Frage ist

ldapTemplate.search(
      query().where("objectclass").is("groupOfNames").and("ou") 
         .is(roles).and("cn").is("key2"), PERSON_CONTEXT_MAPPER); 

, wo ich bin fehlt? Gibt es irgendwelche alternativen Verwendung ldaptemplate.

Antwort

1

Ein LDAP-Suchfilter auf Attributwerte, so muss die Suche auf dem Mitgliedsattribut übereinstimmen:

ldapTemplate.search(
    query(). 
     where("objectclass").is("groupOfNames"). 
     and("member").is("cn=key2,ou=keys"), PERSON_CONTEXT_MAPPER); 

Beachten Sie, dass in dem Fall, der oben Sie den vollständigen DN des Benutzers Sie suchen liefern müssen zum. Der Filter stimmt mit allen groupOfName-Einträgen überein, in denen der angegebene DN als Mitglied vorhanden ist.

Beachten Sie auch, dass Sie Zeichenfolgen für definierte Namen niemals manuell erstellen sollten, da das Austreten von Regeln usw. schwierig ist. Sehen Sie sich zum Erstellen des Benutzer-DN, der in die Mitgliedsattributübereinstimmung aufgenommen werden soll, LdapNameBuilder an.