У меня есть нижеприведенный код, и он работает
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION, "Simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=" + user + ",cn=Users,dc=test,dc=com");
env.put(Context.PROVIDER_URL, "ldap://93.5.95.5:389");
env.put(Context.SECURITY_CREDENTIALS, pass);
LdapContext ctx = new InitialLdapContext(env, null);
SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration objs = ctx.search("dc=test,dc=com", "(objectClass=*)", searchControls);
Но я хотел бы сделать логин для uid. Я изменил
env.put(Context.SECURITY_PRINCIPAL, "uid=" + user + ",cn=Users,dc=test,dc=com");
Я получаю сообщение об ошибке:
Details: javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials]