Логин ldap java - PullRequest
       1

Логин ldap java

0 голосов
/ 24 февраля 2020

У меня есть нижеприведенный код, и он работает

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]

1 Ответ

0 голосов
/ 24 февраля 2020

Вы можете связать только с использованием Отличительного имени, которое выглядит следующим образом:

"cn=" + user + ",cn=Users,dc=test,dc=com"

Вы можете войти в систему как другой пользователь (служебная учетная запись), а затем выполнить поиск «uid = user», которое выдаст «Отличительное имя» Имя.

У нас есть пример кода , который делает нечто похожее .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...