我有一个测试 ldap 服务器和 Spring Boot 设置一起上升
spring.ldap.embedded.base-dn=dc=javausecase,dc=com
spring.ldap.embedded.ldif=classpath:schema.ldif
spring.ldap.embedded.port=8389
spring.ldap.embedded.url=ldap://localhost:8389/
spring.ldap.embedded.validation.enabled=false
ldif的内容
dn: dc=javausecase,dc=com
objectclass: top
objectclass: domain
objectclass: extensibleObject
dc: javausecase
dn: ou=groups,dc=javausecase,dc=com
objectclass: top
objectclass: organizationalUnit
ou: groups
dn: ou=subgroups,ou=groups,dc=javausecase,dc=com
objectclass: top
objectclass: organizationalUnit
ou: subgroups
dn: ou=people,dc=javausecase,dc=com
objectclass: top
objectclass: organizationalUnit
ou: people
dn: cn=one,ou=groups,dc=javausecase,dc=com
cn: one
objectClass: top
objectClass: posixGroup
gidNumber: 1100
description: UNIX systems administrators
memberUID: 111,222
dn: cn=two,ou=groups,dc=javausecase,dc=com
cn: two
objectClass: top
objectClass: posixGroup
gidNumber: 801
description: Network Service Switch Proxy
memberUID: 222
dn: uid=111,ou=people,dc=javausecase,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: 111
sn: 111
uid: 111
gidNumber: 111
userPassword: {SHA}fDYHuOYbzxlE6ehQOmYPIfS28/E=
dn: uid=222,ou=people,dc=javausecase,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: 222
sn: 222
uid: 222
gidNumber: 222
userPassword: {SHA}fDYHuOYbzxlE6ehQOmYPIfS28/E=
我想测试是否可以将用户分组。
如何检查用户 111 是否在第一组中,而用户 222 是否在组 111 和 222 中?
我写了这个查询
List<Attribute> attributes = ldapTemplate.search(
query().where("objectclass").is("posixGroup"),
new AttributesMapper<Attribute>() {
public Attribute mapFromAttributes(Attributes attrs)
throws NamingException {
return attrs.get("cn");
}
});
它返回 2 个属性 1 和 2,但是如何从这些属性中进一步获取 memberUID 的内容
我不太明白。
从文档中我们看到,您需要实现自己的类来反映 LDAP 系统中的用户以及该类的映射器。
我们的确是。
像这样的东西。
如果不需要 LDAP 实体,那么下面的文档中有一个示例,说明如何构建特定查询以便通过
LdapQuery.