2016-04-12 57 views
1

我正在使用spring ldaptemplate。我正試圖從我的小組成員角色。模式如下。ldap按組員查找對象

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 

我想找出其成員cn = key2的角色。

我的查詢是

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

我丟失在哪裏?他們是利用ldaptemplate任何替代。

回答

1
屬性值

的LDAP搜索過濾器,讓你的搜索需求相匹配,對會員屬性:

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

注意,在上面你需要提供你正在尋找的用戶的完整DN的情況下對於。過濾器將匹配指定的DN作爲成員存在的所有groupOfName條目。

此外,請注意,您不應該手動構建專有名稱字符串,因爲轉義規則等是棘手的。要構建要包含在成員屬性匹配中的用戶DN,請查看LdapNameBuilder