Я работаю с довольно старым, большим CMS (TeamSite), и у него есть пример, как подключить его к LDAP-серверу. Я прочитал пример, и он работает очень странно. Он просто хранит пароль в поле «userPassword», как ожидалось, но он выполняет проверку вручную вместо использования команды bind.Использование String.equals сравнить пароль и аутентифицировать пользователя на сервере LDAP, имеет ли смысл?
Это не имеет смысла для меня, но я могу ошибаться, поскольку раньше я не работал с серверами LDAP. У вас есть идея, почему кто-то хочет вручную сравнить пароль вместо использования bind?
Вот как выглядит код:
Attribute attrPassword = attrs.get("userPassword");
if (attrPassword.size() > 0)
{
String storedPassword = new String((byte[])attrPassword.get(0));
if (password.equals(storedPassword))
{
///.....
Прикомандированный. Я хотел бы добавить, что некоторые реализации LDAP не позволяют читать доступ к 'userPassword', но позволяют вам использовать его в запросах. –
Это объясняет, почему я видел пароль, сохраненный в поле «комментарий» в другом примере :) –
Что касается пароля обычного текста. Я нашел где-то в комментариях, что JavaScript делает SHA1 дайджест из пароля перед отправкой формы. –