Abmelden beendet auch die Authentik-Sitzung und springt zurück ins Tool
- Kopfleiste meldet immer über das Portal ab, auch ohne Portal-Sitzung, und gibt die aktuelle Seite als returnTo mit. - Portal merkt sich den Rücksprung über den Umweg zu Authentik. - Setup-Skript setzt den Abmelde-Ablauf des Providers 'Portal' auf default-invalidation-flow (der Provider-Ablauf meldet nur bei der App ab). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
c674fce196
commit
edc64f159a
5 files changed
+59
-8
No files matched your search
@@ -50,6 +50,8 @@ LAUNCH_URLS = {
|
||||
"datenuebertragungen": "https://data.handy-insel.de/api/auth/oidc/start",
|
||||
}
|
||||
|
||||
LOGOUT_FLOW = "default-invalidation-flow"
|
||||
|
||||
SERVICE_ACCOUNT = "hi-portal"
|
||||
SERVICE_GROUP = "hi-portal-service"
|
||||
SERVICE_ROLE = "Portal: Apps pro Benutzer lesen"
|
||||
@@ -133,13 +135,21 @@ def ensure_portal_app(apps):
|
||||
step("1. OIDC-Provider und App 'Portal'")
|
||||
template = next(p for p in results("/providers/oauth2/") if p["name"] == "Preisliste")
|
||||
provider = next((p for p in results("/providers/oauth2/") if p["name"] == "Portal"), None)
|
||||
# "Abmelden" in Portal und Kopfleiste soll auch die Authentik-Sitzung beenden. Der übliche
|
||||
# default-provider-invalidation-flow meldet nur bei der App ab, dieser Ablauf auch bei Authentik.
|
||||
logout_flow = next(f for f in results("/flows/instances/?designation=invalidation") if f["slug"] == LOGOUT_FLOW)
|
||||
if provider:
|
||||
print(" = Provider 'Portal' vorhanden")
|
||||
if provider.get("invalidation_flow") != logout_flow["pk"]:
|
||||
call("PATCH", f"/providers/oauth2/{provider['pk']}/", {"invalidation_flow": logout_flow["pk"]})
|
||||
print(f" + Abmelde-Ablauf: {LOGOUT_FLOW} (beendet auch die Authentik-Sitzung)")
|
||||
else:
|
||||
print(f" = Abmelde-Ablauf: {LOGOUT_FLOW}")
|
||||
else:
|
||||
provider = call("POST", "/providers/oauth2/", {
|
||||
"name": "Portal",
|
||||
"authorization_flow": template["authorization_flow"],
|
||||
"invalidation_flow": template["invalidation_flow"],
|
||||
"invalidation_flow": logout_flow["pk"],
|
||||
"client_type": "confidential",
|
||||
# Neuere Authentik-Versionen setzen per API keine Standard-Grant-Types;
|
||||
# ohne diese Liste lehnt Authentik jede Anmeldung als "malformed" ab.
|
||||
|
||||
Reference in new issue
Block a user