Skip to content

kolla: Enable Horizon multi-domain support - #331

Merged
berendt merged 1 commit into
mainfrom
horizon-keystone-multidomain
Oct 17, 2026
Merged

berendt merged 1 commit into
mainfrom
horizon-keystone-multidomain

Conversation

@ideaship

Copy link
Copy Markdown
Contributor

Upstream defaults horizon_keystone_multidomain to false. Horizon then has no domain field at login and authenticates every password login against the default domain, so users of any other Keystone domain (an LDAP-backed domain, or domains run by domain managers) cannot log in to Horizon with a password. Federated logins through WebSSO do not use this field. osism/testbed has set the option since 2023:

This sets horizon_keystone_multidomain: "yes" in all/099-kolla.yml. kolla-ansible renders it as OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT, which in the 2026.1 Horizon image:

  • adds a required Domain field to the login form (free text, because horizon_keystone_domain_choices has a single entry; prefilled from the login_domain cookie of an earlier login);
  • makes identity administration use domain-scoped tokens: the Users, Groups, Roles and Credentials panels require a domain admin, and the Domains panel offers "Set Domain Context" and a domain filter.

Domain-scoped tokens do not fit into cookie-backed sessions. OSISM already sets horizon_backend_database, which keeps sessions in the database; the new comment points at that dependency.

Sites that want the previous behaviour set horizon_keystone_multidomain: "no".

🤖 Generated with Claude Code

Upstream defaults horizon_keystone_multidomain to false
(001-horizon.yml). Horizon then has no domain field at login and
authenticates every password login against the default domain, so
users of any other Keystone domain (an LDAP-backed domain, or domains
run by domain managers) cannot log in to Horizon with a password.
Federated logins through WebSSO do not use this field. osism/testbed has
set the option since 7286bd1b (osism/testbed#1845).

Set it to "yes" in 099-kolla.yml. kolla-ansible renders it as
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT (_9998-kolla-settings.py.j2),
which in the 2026.1 Horizon image:

- adds a required Domain field to the login form. It is free text,
  because horizon_keystone_domain_choices has only one entry (a
  dropdown appears with more than one), and it is prefilled only from
  the login_domain cookie of an earlier login (openstack_auth/forms.py);
- makes identity administration use domain-scoped tokens
  (api/keystone.py): the Users, Groups, Roles and Credentials panels
  require a domain admin, and the Domains panel offers "Set Domain
  Context" and a domain filter.

Domain-scoped tokens do not fit into cookie-backed sessions; Horizon
then logs an error and disables identity operations
(openstack_auth/backend.py). OSISM already sets
horizon_backend_database, which keeps sessions in the database, and
the new comment points at that dependency.

Sites that want the previous behaviour set
horizon_keystone_multidomain: "no" in their configuration.

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Roger Luethi <luethi@osism.tech>
@ideaship ideaship self-assigned this Oct 17, 2026
@ideaship
ideaship marked this pull request as ready for review October 17, 2026 10:35
@ideaship
ideaship requested a review from berendt October 17, 2026 10:35
@berendt
berendt merged commit 1ecd615 into main Oct 17, 2026
3 checks passed
@berendt
berendt deleted the horizon-keystone-multidomain branch October 17, 2026 11:24
@github-project-automation github-project-automation Bot moved this from New to Done in Human Board Oct 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants