У меня перед проблемой необходимо как можно скорее решить эту проблему, если вам нужна ваша помощь.Java LDAP - не удалось выполнить проверку подлинности пользователей
У меня есть очень простая программа Java только для проверки подлинности образца пользователя Ldap
Выпуск -1 -:
public static void main(String[] args) throws NamingException {
final String ldapAdServer = "ldap://0.0.0.0:389";
final String ldapUsername = "uid=test,ou=People,dc=example,dc=com";
final String ldapPassword = "gdyb21LQTcIANtvYMT7QVQ==";
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);
env.put("java.naming.ldap.attributes.binary", "objectSID");
DirContext ctx = new InitialDirContext(env);
}
выполнения выше программы дает «[LDAP: код ошибки 49 - Invalid Полномочия]»ошибка также я взял экспорт пользователей LDAP и Парольпользователя такой же, как вошел в программу
dn: uid=test,ou=People,dc=example,dc=com objectClass: person objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: top uid: test mail: [email protected] userPassword: {MD5}gdyb21LQTcIANtvYMT7QVQ==
Тот же пароль, который я ввел выше, и код java еще раз бросает ошибку. Я использовал dsconfig и настроил «схему по умолчанию-пароль-хранилище» для использования MD5, и тот же хорошо работает, когда я просто даю простой пароль, но мне нужно введите пароль MD5 hex в ldap, чтобы получить аутентификацию.
проблемные 2: мы используем Liferay в качестве серверной системы и все пользователи деталь должна храниться в LDAP, если пользователь меняет пароль Liferay генерирует пароль с помощью MD5 и шестигранных кодирований что-то вроде этого «098f6bcd4621d373cade4e832627b4f6 », но когда то же самое при экспорте с использованием опции экспорта ldiff, мы что-то вроде этого в ldap "{MD5} gdyb21LQTcIANtvYMT7QVQ ==" существует несоответствие между паролем, генерируемым liferay и ldap. Мне нужен пароль ldap для liferay md5. Снова ввод того же пароля, полученного в форме ldiff-файла, и помещение его в программу java, похоже, не работает, и работает простой текстовый пароль.
Нужна серьезная помощь в этом.
Пожалуйста, не стесняйтесь, если на них требуется дополнительная информация.
Приветствую вас за немедленный ответ на проблему 1, у нас уже есть более 40 миллионов пользователей, которые должны быть импортированы из liferay db в ldap, и теперь их пароль будет хэширован. Как мне обрабатывать этот сценарий liferay использует MD5 с шестнадцатеричным для двоичного формата вы имеете в виду кодировку базы 64? – ravicandy1234