Skip to content

Commit b2ddd87

Browse files
authored
Keycloak prefix setting rename (#2289)
* Change new setting name for keycloak prefix / relative path. No-Issue Signed-off-by: James Tanner <tanner.jc@gmail.com>
1 parent 06a6efb commit b2ddd87

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

galaxy_ng/app/dynaconf_hooks.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,13 @@ def configure_keycloak(settings: Dynaconf) -> Dict[str, Any]:
9999
KEYCLOAK_PORT = settings.get("KEYCLOAK_PORT", default=None)
100100
KEYCLOAK_REALM = settings.get("KEYCLOAK_REALM", default=None)
101101

102-
KEYCLOAK_AUTH_PREFIX = settings.get("KEYCLOAK_AUTH_PREFIX", default="")
102+
# https://www.keycloak.org/server/all-config
103+
# In prior versions of keycloak, the auth and token url paths began
104+
# with /auth. In newer versions, that substring no longer exists.
105+
# There is a setting which can re-add that substring to make
106+
# a newer system operate similar to the old.
107+
KEYCLOAK_KC_HTTP_RELATIVE_PATH = settings.get("KEYCLOAK_KC_HTTP_RELATIVE_PATH", default="")
108+
103109
SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL = \
104110
settings.get("SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL", default=None)
105111
SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL = \
@@ -129,13 +135,15 @@ def configure_keycloak(settings: Dynaconf) -> Dict[str, Any]:
129135
data["KEYCLOAK_HOST_LOOPBACK"] = settings.get("KEYCLOAK_HOST_LOOPBACK", default=None)
130136
data["KEYCLOAK_URL"] = f"{KEYCLOAK_PROTOCOL}://{KEYCLOAK_HOST}:{KEYCLOAK_PORT}"
131137

132-
auth_url_str = "{keycloak}/{prefix}realms/{realm}/protocol/openid-connect/auth/"
138+
auth_url_str = "{keycloak}{prefix}/realms/{realm}/protocol/openid-connect/auth/"
133139

134140
if SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL is not None:
135141
data["SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL"] = SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL
136142
else:
137143
data["SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL"] = auth_url_str.format(
138-
keycloak=data["KEYCLOAK_URL"], realm=KEYCLOAK_REALM, prefix=KEYCLOAK_AUTH_PREFIX
144+
keycloak=data["KEYCLOAK_URL"],
145+
realm=KEYCLOAK_REALM,
146+
prefix=KEYCLOAK_KC_HTTP_RELATIVE_PATH
139147
)
140148

141149
if data["KEYCLOAK_HOST_LOOPBACK"]:
@@ -145,7 +153,9 @@ def configure_keycloak(settings: Dynaconf) -> Dict[str, Any]:
145153
port=KEYCLOAK_PORT
146154
)
147155
data["SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL"] = auth_url_str.format(
148-
keycloak=loopback_url, realm=KEYCLOAK_REALM, prefix=KEYCLOAK_AUTH_PREFIX
156+
keycloak=loopback_url,
157+
realm=KEYCLOAK_REALM,
158+
prefix=KEYCLOAK_KC_HTTP_RELATIVE_PATH
149159
)
150160

151161
if SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL is not None:
@@ -154,7 +164,7 @@ def configure_keycloak(settings: Dynaconf) -> Dict[str, Any]:
154164
data[
155165
"SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL"
156166
] = (
157-
f"{data['KEYCLOAK_URL']}/{KEYCLOAK_AUTH_PREFIX}realms/"
167+
f"{data['KEYCLOAK_URL']}{KEYCLOAK_KC_HTTP_RELATIVE_PATH}/realms/"
158168
f"{KEYCLOAK_REALM}/protocol/openid-connect/token/"
159169
)
160170

galaxy_ng/tests/unit/app/test_dynaconf_hooks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ def test_dynaconf_hooks_authentication_backends_and_classes(
369369
(
370370
True,
371371
{
372-
"KEYCLOAK_AUTH_PREFIX": "auth/",
372+
"KEYCLOAK_KC_HTTP_RELATIVE_PATH": "/auth",
373373
"KEYCLOAK_PROTOCOL": "http",
374374
"GALAXY_TOKEN_EXPIRATION": 0,
375375
},

0 commit comments

Comments
 (0)