使用java连接到打开LDAP

时间:2014-06-18 11:31:14

标签: ldap

我安装了打开的LDAP,它在端口默认端口389上破坏了, 我想搜索目录中的所有人,我正在使用我在本网站上找到的代码

          final String ldapAdServer = "ldap://";
    final String ldapSearchBase = "ou=People,dc=maxcrc,dc=com";

    final String ldapUsername = "Manager";
    final String ldapPassword = "secret";

    final String ldapAccountToLookup = "*";


    Hashtable<String, Object> env = new Hashtable<String, Object>();
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    if(ldapUsername != null) {
        env.put(Context.SECURITY_PRINCIPAL, ldapUsername);
    }
    if(ldapPassword != null) {
        env.put(Context.SECURITY_CREDENTIALS, ldapPassword);
    }
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, ldapAdServer);

    //ensures that objectSID attribute values
    //will be returned as a byte[] instead of a String
    env.put("java.naming.ldap.attributes.binary", "objectSID");

    // the following is helpful in debugging errors
    //env.put("com.sun.jndi.ldap.trace.ber", System.err);
    Context ctx = new InitialContext(env);
    LdapContext ctxLap = new InitialLdapContext();

但是收到错误

Exception in thread "main" javax.naming.InvalidNameException: [LDAP: error code 34 - invalid DN]

我认为这是主机名的问题,我无法正确找到如何找到我需要连接的网址?

1 个答案:

答案 0 :(得分:1)

Exception in thread "main" javax.naming.InvalidNameException: [LDAP: error code 34 - invalid DN]
  

我认为这是主机名的问题,我无法正确找到

没有。这是DN的问题。 DN不是主机名。如果是主机名问题,您将获得某种连接异常。如果您收到LDAP错误代码,则证明您已连接到LDAP服务器。

管理员DN可能存在问题。但是你不应该以LDAP root帐户登录。这是针对OpenLDAP本身的。创建具有足够权限的另一个帐户并使用该帐户。