可以使用Auth0 JWT令牌将POST请求发送到Django后端吗?

时间:2019-07-03 13:19:47

标签: django post jwt token auth0

在过去的5-6天里,我找不到任何有效的文档来解决如何将POST请求发送到基于Django的JWT(Auth0)安全API后端的问题。

我希望有人可以帮助验证发送POST请求是否完全可行,或者我可以考虑使用哪些替代方法。

我当前的问题源于通过客户端凭据流M2M方法使用Auth0 JWT令牌的一个最终的主要错误。虽然我可能知道我使用的是非常独特的设置:

  1. 反应前端
  2. Django后端
  3. 没有用户登录旨在访问安全的API访问权限

我想这只是让我开始质疑以下问题:“我什至可以向Auth0 JWT令牌安全后端发送POST请求吗?” 。如果可能的话,希望有人可以将我重定向到潜在的解决方案,否则,至少我知道我真的需要完全提供其他东西。

我只能在React前端看到的潜在解决方案是实际构建一个:

  • Express.js后端
  • 启用用户帐户登录访问权限

这不是理想的选择,因为这两个选项都不是预期的用例,这将极大地要求我更改大量的代码,尤其是重建整个后端。我本应在2-3周前发射,但现在看来,这是我面临的最后一个安全障碍。

希望有人能帮助我重定向到一个潜在的解决方案,该解决方案涉及如何通过JWT令牌验证将POST请求发送到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);
            }
        }

当前,发送到JWT(Auth0)安全的API后端的所有GET请求均有效。但是,当我尝试发送POST请求时,一切都会失败。

鉴于这是一个无用户帐户登录过程,以及使用Django REST Framework构建的Django后端,除标准500错误外,没有太多错误消息,当我禁用该错误时,该错误消息将消失JWT身份验证过程,这将反过来破坏此安全措施中构建的最初目的。

希望对此有所了解的人可能会帮助我解决此问题。提前非常感谢!

1 个答案:

答案 0 :(得分:0)

设法解决了我的问题,就像将一个潜在的解决方案重定向给那些被困于此潜在问题的人一样。

长话短说,您可以通过带有JWT令牌的Django后端发送POST请求,只是在线上有关该操作的文档几乎为零。我已经在Google上搜索了7天以上的相同文档,但没有找到任何文档。

尽管如此,我还是在此链接中写下了解决方案,希望它能对遭受“拉扯头发效应”的人有所帮助:https://stackoverflow.com/a/56895558/1140206

祝你好运!