Как настроить keystone с помощью Active Directory при использовании root DN (dc=example,dc=com) в качестве user_tree_dn?

Окружение

Red Hat OpenStack Enterprise Linux Platform 7.0

Red Hat OpenStack Platform 8.0

Red Hat OpenStack Platform 9.0

Проблема

При использовании серверной части LDAP и подключении к Active Directory с несколькими контроллерами домена попытка использовать root DN ( dc=example,dc=com ) в качестве user_tree_dn (или tenant/role_tree_dn) завершается ошибкой:

"Authorization Failed: Unable to communicate with identity service: {"error":
{"message": "An unexpected error prevented the server from fulfilling your
request. {'info': '000004DC: LdapErr: DSID-0C0906E8, comment: In order to
perform this operation a successful bind must be completed on the connection.,
data 0, v1db1', 'desc': 'Operations error'}", "code": 500, "title": "Internal
Server Error"}}. (HTTP 500)".

Решение

Это связано с тем, что python-ldap отслеживает все ссылки с анонимным доступом, который по умолчанию отключен в AD из соображений безопасности.

Вы можете отключить использование отсылок в /etc/openldap/ldap.conf, добавив:

REFERRALS off

Вы также можете исправить это в разделе [ldap] файла /etc/keystone/keystone.conf или файла /etc/keystone/domains/keystone.<your_domain>.conf.:

# Override the system's default referral chasing behavior for
# queries. (boolean value)
chase_referrals=false

Первопричина

Объяснение ссылок LDAP:

При подключении к серверу Windows Active Directory и наличии множества контроллеров домена в домене AD Keystone делает DNS-запрос на domain.org и DomainDnsZones.domain.org, затем выбирает случайный контроллер домена и привязывается к нему:

:https://bugs.launchpad.net/keystone/+bug/1234319 :https://bugs.launchpad.net/keystone/+bug/1233365

Шаги диагностики

  • Используйте Wireshark для захвата трафика и анализа запросов на привязку.
  • Проверьте файл /var/log/keystone/keystone.log.