获取用户列表&通过ldap java登录的人

时间:2015-03-20 19:10:34

标签: java ldap jndi

我正在开发一个包含官方员工信息的应用程序,即使是登录信息。

我想做一个LDAP搜索过滤器,为我查找有关特定用户的所有信息,这些信息可以反映到我提供的登录列表中。

有点像sql中的select语句:select * from ldap where login in(my list of login)

我正在使用基本的javax.naming.directory和所有的等等。

// set properties for our connection and provider
Properties properties = new Properties();
properties.put( Context.INITIAL_CONTEXT_FACTORY, 
  "com.sun.jndi.ldap.LdapCtxFactory" );
properties.put( Context.PROVIDER_URL, "ldap://myserver.somewhere.com:389"; );
properties.put( Context.REFERRAL, "ignore" );

// set properties for authentication
properties.put( Context.SECURITY_PRINCIPAL, "User Name" );
properties.put( Context.SECURITY_CREDENTIALS, "password" );

InitialDirContext context = new InitialDirContext( properties );

到目前为止,我唯一可以做的就是让所有对象用户都能获得,如果我能直接得到那些我正在寻找的那些可能非常好的用户:)

非常感谢你们的帮助:)

2 个答案:

答案 0 :(得分:0)

    String searchFilter = "your_query";
    String ldapSearchBase = "dc=ad,dc=my-domain,dc=com"
    SearchControls searchControls = new SearchControls();
    searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);

    NamingEnumeration<SearchResult> results = context.search(ldapSearchBase, searchFilter, searchControls);

查询可能是这样的:

(&(objectClass=user)(sAMAccountName=" + accountName + "))

这里的完整示例: http://www.adamretter.org.uk/blog/entries/LDAPTest.java

答案 1 :(得分:0)

所以我必须在搜索过滤器中输入的最终查询是:

(&(objectCategory=person)
    (|
        (sAMAccountName=login1)
        (sAMAccountName=login2)
        (sAMAccountName=login3)
    )
)

谢谢你的帮助:)