ldap按组成员查找对象
ldap find object by group member
我正在使用 spring ldaptemplate。我正在尝试从我的组中删除角色。架构如下。
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 进行替代。
LDAP 搜索筛选属性值,因此您的搜索需要匹配成员属性:
ldapTemplate.search(
query().
where("objectclass").is("groupOfNames").
and("member").is("cn=key2,ou=keys"), PERSON_CONTEXT_MAPPER);
请注意,在上述情况下,您需要提供要查找的用户的完整 DN。过滤器将匹配指定 DN 作为成员存在的所有 groupOfName 条目。
此外,请注意,您永远不应手动构建专有名称字符串,因为转义规则等非常棘手。要构建要包含在成员属性匹配中的用户 DN,请查看 LdapNameBuilder.
List<String> list = ldapTemplate.list("ou=groups,dc=xyz,dc=com");
Set<String> ldapGroupNames = list.stream()
.map(group -> group.split("=")[1])
.collect(Collectors.toSet());
log.info("ldap Group Names:{}",ldapGroupNames);
我正在使用 spring ldaptemplate。我正在尝试从我的组中删除角色。架构如下。
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 进行替代。
LDAP 搜索筛选属性值,因此您的搜索需要匹配成员属性:
ldapTemplate.search(
query().
where("objectclass").is("groupOfNames").
and("member").is("cn=key2,ou=keys"), PERSON_CONTEXT_MAPPER);
请注意,在上述情况下,您需要提供要查找的用户的完整 DN。过滤器将匹配指定 DN 作为成员存在的所有 groupOfName 条目。
此外,请注意,您永远不应手动构建专有名称字符串,因为转义规则等非常棘手。要构建要包含在成员属性匹配中的用户 DN,请查看 LdapNameBuilder.
List<String> list = ldapTemplate.list("ou=groups,dc=xyz,dc=com");
Set<String> ldapGroupNames = list.stream()
.map(group -> group.split("=")[1])
.collect(Collectors.toSet());
log.info("ldap Group Names:{}",ldapGroupNames);