java - 如何在 JAVA 中获取我的 ldapsearch 中的所有 dn

标签 java linux ldap dn

在 Linux Shell 中,我使用以下命令获取 LDAP 中的所有专有名称 (DN):

ldapsearch -x -b "" -H URL -D uid=administrator,cn=admins,cn=city  -w PASS |grep dn:

我的问题:如何像我使用上述命令那样在 Java 中获取所有 DN?

最佳答案

您可以使用 Java Naming and Directory Interface (JNDI) .

这是一个受链接教程启发的示例:

import javax.naming.*;
import javax.naming.directory.*;
import java.util.Hashtable;

/**
 * Retrieves the DN from the search results
 */
class FullName {
  public static void printSearchEnumeration(NamingEnumeration retEnum) {
    try {
      while (retEnum.hasMore()) {
        SearchResult sr = (SearchResult) retEnum.next();
        System.out.println(">>" + sr.getNameInNamespace());
      }
    } 
    catch (NamingException e) {
      e.printStackTrace();
    }
  }

  public static void main(String[] args) {
    // Set up the environment for creating the initial context
    Hashtable<String, Object> env = new Hashtable<String, Object>(11);
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");

    env.put(Context.PROVIDER_URL, "ldap://localhost:389");
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, "uid=administrator,cn=admins,cn=city");
    env.put(Context.SECURITY_CREDENTIALS, "PASS");

    // Perform search in the entire subtree.
    SearchControls ctl = new SearchControls();
    ctl.setSearchScope(SearchControls.SUBTREE_SCOPE);

    try {
      // Create initial context
      DirContext ctx = new InitialDirContext(env);

      NamingEnumeration answer = ctx.search("", null, ctl);

      // Print the answer
      printSearchEnumeration(answer);

      // Close the context when we're done
      ctx.close();
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }
}

关于java - 如何在 JAVA 中获取我的 ldapsearch 中的所有 dn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39557509/

相关文章:

java - 这是静态方法吗? "static {...}"

java - 正则表达式 Java 错误

python - Linux | python | `OSError: [Errno 2] No such file or directory` & `MemoryError`

linux - 用于生产的 LAMP、XAMPP

centos - 在 openldap 数据库中存储更改日志

java - 如何将属性转换为字符串?

java - (作业)骰子程序,找不到符号

java - Raspberry Pi 的 Keytool 命令

linux - 执行 "ssh localhost"命令时实际发生了什么

java - 如何在LDAP中获取当前登录用户信息