【发布时间】:2019-11-13 04:49:23
【问题描述】:
我无法找到任何解决方案来集成有效的 POST 请求提交,使用 Auth0 的 M2M 令牌客户端凭据流流程从我的 React 前端向我的 Django 后端提交 POST 条目。
我目前完全建立在一个折衷以下的设置之上,其中 Auth0 在某种程度上完全集成:
-
前端:
- React 浏览器设置进行 POST 以通过 Auth0 服务器检索 AUTH0 令牌。
- React Browser Setup 使用基于 JWT 身份验证检索到的 M2M 令牌,执行 GET 请求到后端获取数据。
-
后端:
- Django 后端设置使用 GET 请求对 M2M 令牌进行身份验证以释放数据。
上述设置目前在没有任何 Auth0 实现的情况下运行,随后使用 GET 数据请求。然而,当我尝试发出 POST 数据请求时,这个问题终于出现了。
我确实意识到,鉴于我的设置,
- 基于 React 的请求代码,
- 通过 M2M 设置检索到使用的令牌,
我无法找到任何解决方案来将有效的 POST 请求提交集成到我的 Django 后端。
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);
}
}
我目前确实知道,如果没有任何 Auth0 身份验证,当前的整体 POST 请求都可以工作。
以上代码是以前在没有 Auth0 的情况下工作的示例 POST 请求代码,并且在实现 Auth0 时突然抛出 500 错误,当时可能抛出的 500 错误是 JWT 身份验证配置可能被错误编码。我希望有人可以帮助查明我可以进行的潜在代码更改,以尝试纠正它以通过 Auth0 POST 请求提交:
希望能在此问题上提供帮助。非常感谢您的帮助!
【问题讨论】:
-
您是否在 React 应用程序中使用客户端凭据授权?这可能会出现问题,因为它会将您的客户端机密公开给任何可以使用您的应用程序的人。看看这个例子github.com/auth0-samples/auth0-react-samples/tree/master/…
-
嗨@DanWoda,很遗憾是的。我猜这是验证 M2M 进程的唯一方法,因为我想在不需要任何用户登录系统的情况下自动连接。一直无法找到替代解决方案。除非我在我的 Django 后端构建一个潜在的标记化系统,但我认为它不会像来自 Auth0 的那样“安全”。
-
确实没有解决办法。看看这个 Auth0 主题community.auth0.com/t/…。如果没有一些秘密和独特的东西,比如用户凭证,你实际上无法保护你的 SPA + API。
-
嗨@DanWoda。是的,这是这个前端 webapp 构建的部分不安全部分。 “客户端凭据”内置于前端进行身份验证,但只有内置“用户凭据”,这样的“POST 事务”才会起作用?鉴于您提供的链接的反馈,它确实打破了解决方案的半安全级别的一些更清晰的感觉,没有任何“用户凭据登录”。我想目前的立场是让项目向前推进,因为我已推迟 2-3 周发布。最初的想法只是让一个简单的非用户登录系统运行。
标签: django reactjs jwt token auth0