This is an automated email from the ASF dual-hosted git repository.

vincbeck pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 7a190025174 Do not get `logout_callback_url` from request in keycloak 
auth manager (#62795)
7a190025174 is described below

commit 7a190025174c32d400403e15b0f311fa4575cab6
Author: Vincent <[email protected]>
AuthorDate: Tue Mar 3 11:43:27 2026 -0500

    Do not get `logout_callback_url` from request in keycloak auth manager 
(#62795)
---
 .../src/airflow/providers/keycloak/auth_manager/routes/login.py    | 7 ++++---
 .../keycloak/tests/unit/keycloak/auth_manager/routes/test_login.py | 4 ++--
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git 
a/providers/keycloak/src/airflow/providers/keycloak/auth_manager/routes/login.py
 
b/providers/keycloak/src/airflow/providers/keycloak/auth_manager/routes/login.py
index 304d1683617..941f6d21dd4 100644
--- 
a/providers/keycloak/src/airflow/providers/keycloak/auth_manager/routes/login.py
+++ 
b/providers/keycloak/src/airflow/providers/keycloak/auth_manager/routes/login.py
@@ -20,12 +20,12 @@ from __future__ import annotations
 import json
 import logging
 from typing import cast
-from urllib.parse import quote
+from urllib.parse import quote, urljoin
 
 from fastapi import Request  # noqa: TC002
 from fastapi.responses import HTMLResponse, RedirectResponse
 
-from airflow.api_fastapi.app import get_auth_manager
+from airflow.api_fastapi.app import AUTH_MANAGER_FASTAPI_APP_PREFIX, 
get_auth_manager
 from airflow.api_fastapi.auth.managers.base_auth_manager import 
COOKIE_NAME_JWT_TOKEN
 from airflow.providers.keycloak.version_compat import AIRFLOW_V_3_1_1_PLUS, 
AIRFLOW_V_3_1_8_PLUS
 
@@ -118,7 +118,8 @@ def logout(request: Request):
     end_session_endpoint = keycloak_config["end_session_endpoint"]
 
     id_token = request.cookies.get(COOKIE_NAME_ID_TOKEN)
-    post_logout_redirect_uri = request.url_for("logout_callback")
+    base_url = conf.get("api", "base_url", fallback="/")
+    post_logout_redirect_uri = urljoin(base_url, 
f"{AUTH_MANAGER_FASTAPI_APP_PREFIX}/logout_callback")
 
     if id_token:
         encoded_id_token = quote(id_token, safe="")
diff --git 
a/providers/keycloak/tests/unit/keycloak/auth_manager/routes/test_login.py 
b/providers/keycloak/tests/unit/keycloak/auth_manager/routes/test_login.py
index fb1b4a91890..834fee5f0ae 100644
--- a/providers/keycloak/tests/unit/keycloak/auth_manager/routes/test_login.py
+++ b/providers/keycloak/tests/unit/keycloak/auth_manager/routes/test_login.py
@@ -82,10 +82,10 @@ class TestLoginRouter:
     @pytest.mark.parametrize(
         ("id_token", "logout_callback_url"),
         [
-            (None, "http://testserver/auth/logout_callback";),
+            (None, "/auth/logout_callback"),
             (
                 "id_token",
-                
"logout_url?post_logout_redirect_uri=http://testserver/auth/logout_callback&id_token_hint=id_token";,
+                
"logout_url?post_logout_redirect_uri=/auth/logout_callback&id_token_hint=id_token",
             ),
         ],
     )

Reply via email to