Как работает аутентификация LDAP?
Я прочитал довольно много информации о LDAP, но кое-что я не понимаю.
Предположим, у меня есть приложение J2EE, которое способно как аутентифицировать локальных пользователей, так и пользователей LDAP (взаимоисключающие альтернативы). После того, как я указал в приложении IP-адрес сервера LDAP, базовый DN и DN подключения и пароль, теперь мои пользователи могут войти в систему, используя свою информацию LDAP.
Теперь предположим, что "myuser" с паролем "mypassword" входит в приложение. Что из следующего происходит?
Приложение получает запрос на вход в систему, затем связывается с LDAP, используя свои собственные учетные данные, а затем ищет запись для "myuser" и сравнивает "mypassword" с паролем, хранящимся в каталоге LDAP для соответствующей записи, затем разрешает или отклоняет доступ.
Приложение получает запрос на вход в систему, затем передает учетные данные "myuser" и "mypassword" в LDAP (DN и пароль привязки) и затем, в зависимости от ответа, полученного для операции привязки, разрешает или отклоняет пользователя?
Как это действительно работает?
1 ответ
Насколько я понимаю (и я не эксперт по этим вопросам), это больше похоже на 1, чем на 2, но не совсем так. Приложение получает запрос на вход. Он связывается с LDAP, используя свои собственные учетные данные, пароль передается в открытом виде (поэтому хорошей идеей является LDAPS, или LDAP, который расширяется через TLS). Эти учетные данные должны быть достаточно привилегированными для сервера LDAP, чтобы разрешить поиск различных сохраненных параметров, относящихся к myuser
Учетная запись, в том числе хранится, хешируется, пароль пользователя.
Затем приложение хэши mypassword
, как представлено пользователем, и сравнивает его с хешем, возвращенным из LDAP. Если они совпадают, он знает, что представленные учетные данные хороши, и myuser проходит проверку подлинности; если нет, то нет.