Как сбросить пароль пользователя на сервере каталогов RedHat, используя код Java через LDAPS?

Как я могу получить доступ к серверу каталогов RedHat / серверу каталогов UX HP с помощью LDAPS из моего приложения Java? Я пытаюсь получить доступ к нему через LDAP, он работает нормально, но при использовании LDAPS он не устанавливает соединение с сервером.

Вот мой код, который не работает:

public void setPassword(String userDn,String password) {
    InitialDirContext ctx=null;
    DirContext connection;
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    String systemname = "ldaps://myserver:636";
    env.put(Context.PROVIDER_URL, systemname);  
    env.put(Context.SECURITY_PRINCIPAL, "cn=directory manager");
    env.put(Context.SECURITY_CREDENTIALS, "MySecret");
    ctx = new InitialDirContext(env);
    connection = (DirContext)ctx;
    connection.lookup("dc=mydomain,dc=com");
    ModificationItem[] mods = new ModificationItem[1];
    Attribute mod0 = new BasicAttribute("userpassword",password);
    mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, mod0);
    connection.modifyAttributes(userDn, mods);
    connection.close();
}

Приведенный выше код работает нормально, если я заменю ldaps от ldap,

Но мне нужен код, чтобы работать и для LDAPS. Некоторые сайты упоминают о необходимости хранения ключей, сертификатов и т. Д. Но я ничего об этом не знаю.

2 ответа

Решение

Поскольку вы используете Java, вам необходимо получить копию сертификата сервера или цепочки сертификатов и добавить ее в хранилище ключей Java для JVM, которую вы используете со своим кодом.

Способ получения сертификата зависит от используемой вами реализации LDAP. Администратор LDAP должен быть в состоянии помочь.

Что касается добавления сертификата (ов) в хранилище ключей Java, см. Google.

-Джим

Вы можете попробовать пару вещей:

  • использовать известный хороший инструмент ldapsearch чтобы убедиться, что клиенты LDAP могут подключаться к серверу
  • использование openssl s_client -connect host:port чтобы проверить клиенты могут установить безопасное соединение.
Другие вопросы по тегам