@@ -99,7 +99,13 @@ def configure_keycloak(settings: Dynaconf) -> Dict[str, Any]:
99
99
KEYCLOAK_PORT = settings .get ("KEYCLOAK_PORT" , default = None )
100
100
KEYCLOAK_REALM = settings .get ("KEYCLOAK_REALM" , default = None )
101
101
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
+
103
109
SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL = \
104
110
settings .get ("SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL" , default = None )
105
111
SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL = \
@@ -129,13 +135,15 @@ def configure_keycloak(settings: Dynaconf) -> Dict[str, Any]:
129
135
data ["KEYCLOAK_HOST_LOOPBACK" ] = settings .get ("KEYCLOAK_HOST_LOOPBACK" , default = None )
130
136
data ["KEYCLOAK_URL" ] = f"{ KEYCLOAK_PROTOCOL } ://{ KEYCLOAK_HOST } :{ KEYCLOAK_PORT } "
131
137
132
- auth_url_str = "{keycloak}/ {prefix}realms/{realm}/protocol/openid-connect/auth/"
138
+ auth_url_str = "{keycloak}{prefix}/ realms/{realm}/protocol/openid-connect/auth/"
133
139
134
140
if SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL is not None :
135
141
data ["SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL" ] = SOCIAL_AUTH_KEYCLOAK_AUTHORIZATION_URL
136
142
else :
137
143
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
139
147
)
140
148
141
149
if data ["KEYCLOAK_HOST_LOOPBACK" ]:
@@ -145,7 +153,9 @@ def configure_keycloak(settings: Dynaconf) -> Dict[str, Any]:
145
153
port = KEYCLOAK_PORT
146
154
)
147
155
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
149
159
)
150
160
151
161
if SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL is not None :
@@ -154,7 +164,7 @@ def configure_keycloak(settings: Dynaconf) -> Dict[str, Any]:
154
164
data [
155
165
"SOCIAL_AUTH_KEYCLOAK_ACCESS_TOKEN_URL"
156
166
] = (
157
- f"{ data ['KEYCLOAK_URL' ]} / { KEYCLOAK_AUTH_PREFIX } realms/"
167
+ f"{ data ['KEYCLOAK_URL' ]} { KEYCLOAK_KC_HTTP_RELATIVE_PATH } / realms/"
158
168
f"{ KEYCLOAK_REALM } /protocol/openid-connect/token/"
159
169
)
160
170
0 commit comments