В настоящее время я создаю прототип установки OpenStack (IceHouse RDO), используя несколько доменов для организации групп пользователей/проектов (в будущем, надеюсь, Juno, мы хотели бы перейти на [специфические для домена серверные части][1]http://docs.openstack.org/developer/keystone/configuration.html#domain-specific-drivers для поддержки нескольких механизмов аутентификации LDAP).
После [этого руководства][1]http://www.florentflament.com/blog/setting-keystone-v3-domains.html дословно Я включил несколько доменов с помощью curl. В конце этого есть новый пользователь cloud_admin, два домена adm1 и adm2, а также отдельные пользователи и проекты usr1, usr2 и prj1, prj2 соответственно.
В настоящее время я запускаю Horizon из репозитория git и включил несколько доменов:
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_API_VERSIONS = {
"data_processing": 1.1,
"identity": 3,
"volume": 2
}
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
Мой дашборд теперь запрашивает домен помимо пользователя/пароля.
Если я войду в систему как usr1 на dom1, я войду. Однако возникают проблемы с аутентификацией всякий раз, когда Horizon пытается запросить различные службы под капотом.
Например, сначала вы попадаете в окно «Обзор», а мне выдается сообщение «Ошибка: Несанкционировано: Невозможно получить информацию об использовании».
В журнале веб-сервера я вижу такие вещи, как (я добавил x):
Login successful for user "usr1".
DeprecationWarning: check_for_test_cookie is deprecated; ensure your login view is CSRF-protected.
WARNING:py.warnings:DeprecationWarning: check_for_test_cookie is deprecated; ensure your login view is CSRF-protected.
[20/Aug/2014 20:03:58] "POST /auth/login/ HTTP/1.1" 302 0
[20/Aug/2014 20:03:58] "GET / HTTP/1.1" 302 0
novaclient connection created using token "xxxxx" and url "http://x.x.x.x:8774/v2/xxxxx"
REQ: curl -i 'http://x.x.x.x:8774/v2/xxxxx/extensions' -X GET -H "Accept: application/json" -H "User-Agent: python-novaclient" -H "X-Auth-Project-Id: xxxxx" -H "X-Auth-Token: {SHA1}xxxxx"
RESP: [401] {'date': 'Wed, 20 Aug 2014 20:04:26 GMT', 'content-length': '23', 'content-type': 'text/plain', 'www-authenticate': "Keystone uri='http://x.x.x.x:5000/'"}
RESP BODY: Authentication required
Все это работало лучше, когда я использовал один домен (v2 keystone API).
Мне кажется, что он неправильно генерирует токены и/или пытается использовать API аутентификации v2. Есть ли какая-то другая базовая вещь, которую я забыл настроить на стороне сервера? (возможно что-то в keystone.conf). Похоже, что другие люди, по крайней мере, смогли получить достойную работу с панелью инструментов для обычных пользователей, хотя Horizon в настоящее время, похоже, не поддерживает задачи администрирования домена,