Как настроить 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
,
- objectClass = inetOrgPerson
- objectClass = organizPerson
- objectClass = person
- objectClass = top
- cn = Лоуренс К. Х. Лох
- sn = Loh
- displayName = Лоуренс
- o = ИКЕА
- UID = Лоуренс
- 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.