可以使用 Auth0 JWT 令牌向 Django 后端发送 POST 请求吗?
Posted
技术标签:
【中文标题】可以使用 Auth0 JWT 令牌向 Django 后端发送 POST 请求吗?【英文标题】:Can Auth0 JWT Tokens Be Used to Send POST Requests to Django Backend? 【发布时间】:2019-11-14 04:53:42 【问题描述】:在过去的 5-6 天里,我找不到任何有效文档,说明如何解决将 POST 请求发送到基于 Django 的 JWT (Auth0) 安全 API 后端的问题。
我希望有人可以帮助验证是否可以发送 POST 请求或者我可能会考虑哪些替代方案。
我当前的问题源于通过客户端凭据流 M2M 方法使用 Auth0 JWT 令牌的一个假定的最终重大错误。虽然我可能理解我使用的是非常独特的设置:
-
反应前端
Django 后端
没有用于访问安全 API 访问的用户登录
我想这让我开始质疑是否简单地说,“我什至可以将 POST 请求发送到 Auth0 JWT 令牌安全后端吗?”。如果可能的话,希望有人可以将我重定向到一个潜在的解决方案,否则,至少我知道我真的需要完全寻找其他东西。
我只在 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 身份验证过程,这反过来会破坏构建此安全措施的最初目的。
希望对此有更深入了解的人可以帮助我解决这个问题。提前非常感谢!
【问题讨论】:
客户端凭据授予不是验证 SPA 和 API 的安全方式。如果 SPA 访问信息不需要用户身份验证,您不妨将 API 向公众开放。任何人都可以检查您的 React 应用并获取您的客户端 ID 和密码,然后使用它来获取您的 API 的访问令牌。 嗨@DanWoda,那么我的问题是M2M 客户端凭证结构应该如何工作?鉴于我的网站是一个非常基本的网站,如果包含登录系统可能会使它过于复杂,因为它没有那么多功能需要这样的功能。因此,我假设我的系统很像系统到系统的通信,就像 M2M 一样,尽管它是前端到后端的关系。那么 SPA + API 是不是因为我在前端使用 React 而在后端使用 Django 才可能适合我的场景的唯一解决方案? 【参考方案1】:刚刚设法解决了我的问题,只是想为那些被这个潜在问题困扰的人重定向一个潜在的解决方案。
长话短说,您可以使用 JWT 令牌通过 Django 后端发送 POST 请求,只是网上关于如何操作的文档几乎为零。我已经在谷歌上搜索了 7 天的相同文件,但没有找到任何文件。
尽管如此,我还是在这个链接中写下了我的解决方案,希望对遭受“拉毛效应”的人有所帮助:https://***.com/a/56895558/1140206
祝你好运!
【讨论】:
以上是关于可以使用 Auth0 JWT 令牌向 Django 后端发送 POST 请求吗?的主要内容,如果未能解决你的问题,请参考以下文章