OpenStack IceHouse:使用多个域的仪表板身份验证错误

OpenStack IceHouse:使用多个域的仪表板身份验证错误,openstack,keystone,openstack-horizon,Openstack,Keystone,Openstack Horizon,我目前正在原型化一个OpenStack设置(IceHouse RDO),使用多个域来组织用户/项目组(未来,希望是Juno,我们希望转移到[特定于域的后端][1],以支持多个LDAP身份验证后端) 按照[本指南][1]逐字逐句,我使用curl启用了多个域。最后是一个新的cloud_admin用户,两个域adm1和adm2,以及单个用户和项目usr1、usr2和prj1、prj2 我目前正在运行git repo的Horizon,并启用了多个域: OPENSTACK_KEYSTONE_MULTIDO

我目前正在原型化一个OpenStack设置(IceHouse RDO),使用多个域来组织用户/项目组(未来,希望是Juno,我们希望转移到[特定于域的后端][1],以支持多个LDAP身份验证后端)

按照[本指南][1]逐字逐句,我使用curl启用了多个域。最后是一个新的cloud_admin用户,两个域adm1和adm2,以及单个用户和项目usr1、usr2和prj1、prj2

我目前正在运行git repo的Horizon,并启用了多个域:

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
我的仪表板现在请求用户/密码之外的域

如果我在dom1上以usr1身份登录,它会让我进入。然而,每当horizon试图查询后台的各种服务时,都会出现身份验证问题

例如,它最初会将您带到“概述”窗口,并向我显示一条消息“错误:未经授权:无法检索使用信息”

在web服务器日志中,我看到了(我添加的x):

当我使用单域(v2keystoneapi)时,这一切都工作得更好


在我看来,它似乎在错误地生成令牌和/或尝试使用v2 auth API。还有什么我忘记设置服务器端的基本东西吗?(可能是keystone.conf中的内容)。尽管Horizon目前似乎不支持域管理任务,但似乎其他人至少能够为普通用户获得良好的仪表板体验,

我认为OpenStack Compute(nova)无法在Icehouse版本中接受Identity API v3请求。如果这是你看到的错误,那就奇怪了

嗨,我重复了这个问题并解决了!(V3API需要在所有OpenStack服务配置文件中启用auth_版本)。
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