diff --git a/src/keycloak/keycloak_openid.py b/src/keycloak/keycloak_openid.py index 31e2893..94144de 100644 --- a/src/keycloak/keycloak_openid.py +++ b/src/keycloak/keycloak_openid.py @@ -112,11 +112,7 @@ class KeycloakOpenID: self.realm_name = realm_name headers = custom_headers if custom_headers is not None else dict() self.connection = ConnectionManager( - base_url=server_url, - headers={"Content-Type": "application/json", **headers}, - timeout=timeout, - verify=verify, - proxies=proxies, + base_url=server_url, headers=headers, timeout=timeout, verify=verify, proxies=proxies ) self.authorization = Authorization() @@ -786,6 +782,8 @@ class KeycloakOpenID: params_path = {"realm-name": self.realm_name} orig_bearer = self.connection.headers.get("Authorization") self.connection.add_param_headers("Authorization", "Bearer " + token) + orig_content_type = self.connection.headers.get("Content-Type") + self.connection.add_param_headers("Content-Type", "application/json") data_raw = self.connection.raw_post( URL_CLIENT_REGISTRATION.format(**params_path), data=json.dumps(payload) ) @@ -794,6 +792,11 @@ class KeycloakOpenID: if orig_bearer is not None else self.connection.del_param_headers("Authorization") ) + ( + self.connection.add_param_headers("Content-Type", orig_content_type) + if orig_content_type is not None + else self.connection.del_param_headers("Content-Type") + ) return raise_error_from_response(data_raw, KeycloakPostError) def device(self): @@ -839,6 +842,8 @@ class KeycloakOpenID: params_path = {"realm-name": self.realm_name, "client-id": client_id} orig_bearer = self.connection.headers.get("Authorization") self.connection.add_param_headers("Authorization", "Bearer " + token) + orig_content_type = self.connection.headers.get("Content-Type") + self.connection.add_param_headers("Content-Type", "application/json") # Keycloak complains if the clientId is not set in the payload if "clientId" not in payload: @@ -852,6 +857,11 @@ class KeycloakOpenID: if orig_bearer is not None else self.connection.del_param_headers("Authorization") ) + ( + self.connection.add_param_headers("Content-Type", orig_content_type) + if orig_content_type is not None + else self.connection.del_param_headers("Content-Type") + ) return raise_error_from_response(data_raw, KeycloakPutError) async def a_well_known(self):