Как настроить 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 = organizPerson
  3. objectClass = person
  4. objectClass = top
  5. cn = Лоуренс К. Х. Лох
  6. sn = Loh
  7. displayName = Лоуренс
  8. o = ИКЕА
  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 вместо длинного имени для аутентификации?

1 ответ

Решение

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

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

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

Другие вопросы по тегам