我用Java发现LDAP 我按照本指南实施了一个请求LDAP的解决方案:https://docs.spring.io/spring-ldap/docs/current/reference/
我已经能够通过以下代码登录查询用户:
@Entry(objectClasses = { "user" })
public final class Person {
@Id
private Name dn;
@Attribute(name = "sAMAccountName")
String login;
@Attribute(name = "cn")
String name;
...
}
final LdapTemplate ldapTemplate;
...
public Person consultPerson(final String login) {
final LdapQuery findByLoginQuery = query() //
.where("sAMAccountName") //
.is(login);
return ldapTemplate.findOne(findByLoginQuery, Person.class);
}
现在,我想获取用户所属的组列表。
以下调整有效,但我希望列出Group
而不是String
列表。
@Entry(objectClasses = { "user" })
public final class Person {
@Id
private Name dn;
@Attribute(name = "sAMAccountName")
String login;
@Attribute(name = "cn")
String name;
@Attribute(name = "memberOf")
Set<String> groups;
...
}
不幸的是,我无法这样做。
有人知道它是否可能?
感谢您的帮助。
答案 0 :(得分:0)
为了检索操作属性,您必须明确地要求它,或者使用特殊属性“+”请求所有属性。
点击here
因此,在您的情况下,搜索查询将如下所示:
final LdapQuery findByLoginQuery = query().attributes("sAMAccountName","cn","memberOf")
.where("sAMAccountName").is(login);
或者也许:
final LdapQuery findByLoginQuery = query().attributes("*","+")
.where("sAMAccountName").is(login);
其中“*”表示所有用户属性,“+”表示模型中指示的所有操作属性。