Можно ли использовать токены JWT Auth0 для отправки POST-запросов в бэкэнд Django? - PullRequest
0 голосов
/ 03 июля 2019

За последние 5-6 дней мне не удалось найти какой-либо действительной документации о том, как решить мою проблему отправки POST-запросов в защищенный API-интерфейс JWT (Auth0), построенный на Django.

Я надеюсь, что кто-то может помочь проверить, возможна ли отправка POST-запросов или какие альтернативы я могу рассмотреть.

Моя текущая проблема связана с предполагаемой последней серьезной ошибкой при использовании токенов JWT Auth0 через метод Client Credential Flow M2M.Хотя я могу понять, что я использую уникальную настройку:

  1. React Frontend
  2. Django Backend
  3. Нет логина пользователя, предназначенного для доступа к защищенному API-доступу

Полагаю, это только что привело меня к вопросу о том, просто ли «Могу ли я даже отправлять запросы POST на защищенный бэкэнд Auth0 JWT Token?» .Если это возможно, надеюсь, что кто-то может перенаправить меня к потенциальному решению, иначе, по крайней мере, я знаю, что мне действительно нужно полностью найти что-то еще.

Потенциальные решения, которые я вижу только в интерфейсе React, состоят в том, чтобыфактически создать:

  • Express.js бэкэнд
  • Включить доступ для входа в учетную запись пользователя

Это не было бы идеально, так как оба варианта не предназначенысценарий использования, и он потребует от меня значительного изменения кода, особенно для перестройки всего бэкэнда.Я предполагал запустить его 2-3 недели назад, но, очевидно, сейчас это последний контрольно-пропускной пункт, с которым я столкнулся.

Надеюсь, какая-то добрая душа может помочь перенаправить меня на потенциальное решение о том, как я могу отправить POSTзапросы, с проверкой токена JWT, к бэкэнду Django?

Используемый текущий код выглядит следующим образом, и, к сожалению, опция GET работает, но эта опция запроса POST, похоже, не работает:

let getBackendConfig = {
            headers: { 
                "Content-Type": "application/json",
                Authorization: process.env.REACT_APP_JWT_AUTH0_HEADER + " " + auth0Token,
            },
        };



async function submitLocationViaPOST( dataToPOST ) {
            setIsLocationUploaded("process");
            try {
                Promise.all([
                    await axios
                        .post(urlSubmitLocationPOSTAPI, dataToPOST, getBackendConfig)
                        .then(response => {
                            console.log("? urlSubmitLocationPOSTAPI Reply Data: ", response);
                            if (response.status === 201) {
                                // EXECUTE ONLY IF RESPONSE IS "201" --- MEANING ENTRY CREATED SUCCESSFULLY
                                setIsLocationUploaded("finish");
                            }
                        })
                ]);
            }
            catch (err) {
                setIsLocationUploaded("error");
                console.log("? urlSubmitLocationPOSTAPI Error: " + err);
            }
        }

В настоящее время все запросы GET, отправленные в защищенный бэкэнд API JWT (Auth0), работают.Однако, когда я пытаюсь отправить запрос POST, все терпит неудачу.

Учитывая, что это процесс без входа в систему под учетной записью пользователя, а также бэкэнд Django, созданный с помощью Django REST Framework, этого не происходит.много сообщений об ошибках, за исключением стандартной ошибки 500, которая исчезнет, ​​когда я отключу процесс аутентификации JWT, что, в свою очередь, нанесет ущерб первоначальной цели создания этой меры безопасности.

Надеюсь, кто-то с большими знаниями об этом можетпомогите мне в этом вопросе.Заранее большое спасибо!

1 Ответ

0 голосов
/ 05 июля 2019

Только что удалось решить мою проблему и просто перенаправить потенциальное решение для тех, кто застрял с этой потенциальной проблемой.

Короче говоря, вы МОЖЕТЕ отправить POST-запросы через бэкэнд Django с JWTТокен, только то, что есть почти нулевая документация о том, как это сделать .Я искал те же документы в Google в течение 7 дней, но не смог их найти.

Тем не менее, я записал свое решение в этой ссылке, надеюсь, оно поможет всем, кто пострадал от "эффекта растягивания волос": https://stackoverflow.com/a/56895558/1140206

Удачи!

...