Почему процедура аутентификации LDAP обычно использует две привязки?

Я использую Spring LDAP и вижу, что все используют две привязки. Первая привязка как учетная запись службы, а вторая привязка как пользователь с заданным паролем. Но я вижу, что проверка пользователя по паролю в ldap может выполняться даже без первой привязки.

Кто-нибудь может объяснить, почему мы следуем двум привязкам в ldap? И какое значение имеет первая привязка с использованием сервисного аккаунта?


person RBz    schedule 28.01.2015    source источник


Ответы (2)


Для аутентификации в LDAP вам необходимо иметь DN и пароль.

Обычно причиной 2 привязок является то, что у вас нет DN — имя пользователя не обязательно является частью DN. Поэтому вам нужно использовать учетную запись службы, чтобы найти пользователя (DN) по какому-либо атрибуту, например. "mail={mail}", а затем подтвердите пароль для найденного DN, выполнив другую привязку.

Одинарную привязку можно использовать в 2-х ситуациях:

  1. Вы можете определить DN без поиска, например. если для входа в систему используются uid+password, а «uid» является частью DN, а иерархия LDAP является плоской для всех пользователей, например. "uid={uid},ou=users,...".
  2. Вы не выполняете проверку пароля с помощью привязки, а получаете хэш пароля через учетную запись службы и сравниваете хэш самостоятельно.
person Vilmantas Baranauskas    schedule 28.01.2015
comment
Я бы не рекомендовал сравнивать хеш в вашем приложении, так как это будет означать, что вам нужна привилегированная учетная запись для поиска пароля. Обычно атрибут пароля может быть прочитан только самим пользователем и учетной записью администратора в LDAP. Поэтому вы можете прочитать атрибут пароля, только используя учетную запись администратора в своем приложении для привязки и последующего поиска пользователя. Следовательно, существует риск прочитать все пароли в LDAP и взломать их. Я бы всегда использовал способ 2bind, так как это самый безопасный способ. - person heiglandreas; 29.01.2015

существует несколько способов аутентификации по LDAP. Вы можете сделать это, получив пароль пользователя и сопоставив его в своем программном обеспечении (одна привязка), или вы можете сделать это, привязавшись к LDAP с учетными данными пользователя (две привязки).

Эти две обязательные вещи работают следующим образом:

1) Возьмите имя пользователя и найдите его в LDAP (привязка 1 с учетной записью службы) 2) Аутентификация с использованием пароля (привязка 2 с учетной записью пользователя)

С Уважением

Шеллтукс

person Shelltux    schedule 28.01.2015
comment
Эта вещь с одной привязкой — это PasswordComparisonAuthenticator, а эта вещь с двумя привязками — это BindAuthenticator. - person Shelltux; 28.01.2015