为具有其所属组的用户请求LDAP

时间:2017-12-29 10:35:46

标签: java spring ldap

我用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;

    ...
}

不幸的是,我无法这样做。

有人知道它是否可能?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

为了检索操作属性,您必须明确地要求它,或者使用特殊属性“+”请求所有属性。

点击here

因此,在您的情况下,搜索查询将如下所示:

 final LdapQuery findByLoginQuery = query().attributes("sAMAccountName","cn","memberOf")
        .where("sAMAccountName").is(login);

或者也许:

final LdapQuery findByLoginQuery = query().attributes("*","+")
        .where("sAMAccountName").is(login);

其中“*”表示所有用户属性,“+”表示模型中指示的所有操作属性。