OpenStack Horizon WebSSO登录重定向至Keystone API时路径缺失/v3导致404错误
遇到这种路径前缀缺失引发的404问题确实挺闹心的,结合你用kolla-ansible部署Yoga版本集群的场景,我给你梳理几个排查和解决的方向:
首先得确认问题根源:你手动在URL里补上/v3就能正常访问,说明Horizon生成WebSSO重定向链接时,没有正确拼接Keystone API的版本前缀,导致请求发到了Keystone未处理的路径上。
排查和修复步骤:
检查Horizon的Keystone地址配置
在kolla-ansible的部署配置中,Horizon服务依赖的Keystone URL必须包含/v3后缀。你可以查看globals.yml里的相关变量,确保horizon_keystone_url设置为http://<openstack_hostname>:5000/v3(而不是不带/v3的地址)。
如果是容器内的配置文件,进入Horizon容器后,检查/etc/openstack-dashboard/local_settings.py中的OPENSTACK_KEYSTONE_URL参数,确认它的值是带/v3的完整Keystone endpoint。重新部署Horizon服务
如果发现配置有误,修改完globals.yml后,执行以下命令重新部署Horizon,让配置生效:kolla-ansible deploy -t horizon要是想快速测试,也可以直接修改容器内的
local_settings.py,然后重启Horizon服务(容器内执行systemctl restart openstack-dashboard,或者直接重启Horizon容器)。验证Keystone的Endpoint配置
执行openstack endpoint list命令,查看Keystone的public endpoint是否正确包含/v3。正常的public endpoint应该是类似这样的:http://<openstack_hostname>:5000/v3如果Endpoint里没有
/v3,需要用openstack endpoint set命令更新Keystone的endpoint配置,确保版本前缀正确。检查Keystone联邦配置的API版本
确认你在配置OpenID Connect身份提供商(IdP)和协议时,使用的是v3版本的Keystone API。kolla-ansible里的keystone_federation_idps相关变量,应该关联的是v3版本的endpoint,避免生成不带版本前缀的链接。
按照这些步骤调整后,Horizon生成的WebSSO重定向URL应该就会自动带上/v3前缀,404的问题应该就能解决了。
备注:内容来源于stack exchange,提问作者aflamant




