使用java连接到OpenLDAP

使用java连接到OpenLDAP,ldap,Ldap,我已经在默认端口389上安装了OpenLDAP,它正在破坏端口, 我想搜索目录中的所有人,我正在使用我在这个网站上找到的代码 final String ldapAdServer = "ldap://"; final String ldapSearchBase = "ou=People,dc=maxcrc,dc=com"; final String ldapUsername = "Manager"; final String ldapPassword

我已经在默认端口389上安装了OpenLDAP,它正在破坏端口, 我想搜索目录中的所有人,我正在使用我在这个网站上找到的代码

          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();
我想这是主机名的问题,我找不到正确的主机名。如何找到需要连接的url

Exception in thread "main" javax.naming.InvalidNameException: [LDAP: error code 34 - invalid DN]
我想这是主机名的问题,我找不到正确的主机名

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


这可能是经理DN的问题。但无论如何,您不应该以LDAP根帐户的身份登录。这是针对OpenLDAP本身的。创建另一个具有足够权限的帐户并使用它。

如果我将Context.SECURITY\u身份验证设置为none,则在线程“main”javax.naming.NoInitialContextException中会出现以下错误异常:需要在环境或系统属性中指定类名,或者作为小程序参数,或者在应用程序资源文件中:java.naming.factory.initialize如果您在Mac上,请确保build.xml文件中没有任何
Exception in thread "main" javax.naming.InvalidNameException: [LDAP: error code 34 - invalid DN]