4.23.0.0 UI: SAML "Single sign-on" tab disabled after logout because listIdps is cancelled

Offen Anfängerfreundlich
#14,465 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
78/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
javascript

Rechercherichtung

Beginne in ui/src/api/index.js bei der Logout-Implementierung und untersuche dann fetchData() in der Login.vue-Komponente, auf die das Issue verweist. Reproduziere das Logout mit einem konfigurierten SAML IdP und verfolge, ob die ausstehende listIdps-Anfrage durch das gemeinsame Token abgebrochen wird. Die Änderung ist abgeschlossen, wenn das Abbrechen beim Logout idps nicht mehr vor dem Abruf durch die Login-Seite löscht und der „Single sign-on“-Tab ohne Neuladen der Seite aktiviert bleibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

bug status:has-work-around
problem

With SAML2 enabled (one IdP), logging out sometimes shows the login page without the
"Single sign-on" tab (the tab is disabled because idps is empty) until the page is reloaded.

Cause in ui/src: the Logout action clears the token first, the router shows the login page and
Login.vue fetchData() calls listIdps; then api/index.js logout() finishes and calls
sourceToken.cancel(), which cancels all pending requests including listIdps. idps stays [] and the
SAML tab is :disabled="idps.length === 0".

versions

CloudStack 4.23.0.0 UI, SAML2 with Microsoft Entra ID, Chrome / Safari on macOS.

The steps to reproduce the bug
  1. Enable saml2 with one IdP.
  2. Log in (any method), then Logout from the user menu.
  3. The login page shows only "Portal login"; F5 brings the "Single sign-on" tab back.
What to do about it?

Cancel pending requests before navigating to the login page (or create a fresh cancel token
before Login.vue fetches), or retry listIdps when it was cancelled.
Our workaround: a small script that reloads the page once when the app navigates from an in-app
route to #/user/login.

Vorherrschende Sprache
Java
Sterne
3.1k
Forks
1.4k
Ø Merge
10 T. 9 Std.
Gemergte PRs (30 T.)
20

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus apache/cloudstack

Alle Issues in apache/cloudstack

Ähnliche Issues

Weitere Issues zu Java

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.