Назад | Перейти на главную страницу

Как настроить LDAP в ApacheDS для использования uid для аутентификации?

При добавлении нового пользователя под dc=example,dc=com используя Apache Directory Studio, у меня есть эта древовидная структура:

dc=example,dc=com
|-- ou = engineering
     |-- cn = Lawrence K.H Loh+o=IKEA+sn=Loh+uid=lawrence+displayName=Lawrence

Ниже приведен список атрибутов для cn.

  1. objectClass = inetOrgPerson
  2. objectClass = organizationPerson
  3. objectClass = человек
  4. objectClass = вверху
  5. cn = Лоуренс К.Х. Ло
  6. sn = Loh
  7. displayName = Лоуренс
  8. о = ИКЕА
  9. uid = Лоуренс
  10. userPassword = хешированный пароль SSHA

Есть эта ошибка LDAP: error code 49 - INVALID_CREDENTIALS: Bind failed: Attempt to lookup non-existant entry когда я подключаю эту запись через uid=lawrence,ou=engineering,dc=example,dc=com. Но он работает нормально, если я использую это cn=Lawrence K.H Loh+o=IKEA+sn=Loh+uid=lawrence+displayName=Lawrence,ou=engineering,dc=example,dc=com. Могу я узнать, как мне перейти на uid=lawrence вместо длинного имени для аутентификации?

С этим конкретным предметом вряд ли получится. LDAP ищет вас для привязки к выдающееся имя (DN) объекта, и основным атрибутом в этом случае является cn. Это осознанное дизайнерское решение, поскольку нет гарантии, что любой заданный атрибут объектов в контейнере будет уникальным, кроме того, который связан с их DN.

Это не помешает службам выполнить поиск в вашем каталоге и определить, что uid=lawrence связан с этим конкретным DN (и, таким образом, может найти любые другие атрибуты, необходимые для этого объекта), но любые вызовы, которые явно необходимо запускать для DN, могут выполняться только для основного атрибута.

Это не означает, что нельзя избежать указания DN. На ум приходит реализация аутентификации SASL и определение карты между SASL ID и DN. Но в контексте вашего вопроса нет, вы не можете переключиться на использование неосновного атрибута DN, на котором вы аутентифицируетесь, вместо DN.