尝试在 Forge 上进行身份验证时是否可以解决 CORS 问题?
Is it possible to work around CORS while trying to Authenticate on Forge?
我们正在 Unity 中构建 WebGL 应用程序,我们想在其中使用 Forge 的 Design Automation API。由于大多数设计自动化 API 都使用 Websocket API,因此非常简单。但是,身份验证是通过 HTTP 请求完成的,这当然会被 CORS 阻止。JS 代码如下所示:
Authentication: function () {
var postData = {
'client_id': 'the id',
'client_secret': 'the secret',
'grant_type': 'client_credentials',
'scope': 'code:all'
};
$.ajax({
url: 'https://developer.api.autodesk.com/authentication/v1/authenticate',
type: 'POST',
contentType: 'application/x-www-form-urlencoded',
data: postData,
}).done(function (data, textStatus, jqXHR) {
console.log("worked", data, textStatus, jqXHR);
console.log("data", data);
console.log(jqXHR.responseJSON);
}).fail(function (jqXHR, textStatus, errorThrown) {
console.log("failed", jqXHR, textStatus, errorThrown);
console.log(jqXHR.responseJSON);
})
}
参考文档:https://forge.autodesk.com/en/docs/oauth/v1/reference/http/authenticate-POST/
我们不确定在这种情况下如何绕过 CORS 以及如何从 Forge 获取不记名令牌..
我认为您不想从浏览器进行双向 oauth。这意味着您将您的客户端 id/secret 分发给使用您网站的每个人。
你应该使用 3-legged oauth。例如,参见 https://github.com/zhuliice/forge-designautomation-websocket-api/tree/main/browser
您似乎是在浏览器的网页上请求双足访问令牌。不幸的是,这是不允许的,因为正如 Albert 所提到的,通过浏览器开发控制台查看您的 JS 文件,您的客户端 ID 和密码将暴露给使用您网站的每个人。这对您的网站来说是一个致命的安全问题。
我建议您将 OAuth 工作流移至后端 (server-side),提供一个端点,并使用 AJAX 调用从前端(浏览器端)获取必要的访问令牌下面的示例。
我们正在 Unity 中构建 WebGL 应用程序,我们想在其中使用 Forge 的 Design Automation API。由于大多数设计自动化 API 都使用 Websocket API,因此非常简单。但是,身份验证是通过 HTTP 请求完成的,这当然会被 CORS 阻止。JS 代码如下所示:
Authentication: function () {
var postData = {
'client_id': 'the id',
'client_secret': 'the secret',
'grant_type': 'client_credentials',
'scope': 'code:all'
};
$.ajax({
url: 'https://developer.api.autodesk.com/authentication/v1/authenticate',
type: 'POST',
contentType: 'application/x-www-form-urlencoded',
data: postData,
}).done(function (data, textStatus, jqXHR) {
console.log("worked", data, textStatus, jqXHR);
console.log("data", data);
console.log(jqXHR.responseJSON);
}).fail(function (jqXHR, textStatus, errorThrown) {
console.log("failed", jqXHR, textStatus, errorThrown);
console.log(jqXHR.responseJSON);
})
}
参考文档:https://forge.autodesk.com/en/docs/oauth/v1/reference/http/authenticate-POST/
我们不确定在这种情况下如何绕过 CORS 以及如何从 Forge 获取不记名令牌..
我认为您不想从浏览器进行双向 oauth。这意味着您将您的客户端 id/secret 分发给使用您网站的每个人。
你应该使用 3-legged oauth。例如,参见 https://github.com/zhuliice/forge-designautomation-websocket-api/tree/main/browser
您似乎是在浏览器的网页上请求双足访问令牌。不幸的是,这是不允许的,因为正如 Albert 所提到的,通过浏览器开发控制台查看您的 JS 文件,您的客户端 ID 和密码将暴露给使用您网站的每个人。这对您的网站来说是一个致命的安全问题。
我建议您将 OAuth 工作流移至后端 (server-side),提供一个端点,并使用 AJAX 调用从前端(浏览器端)获取必要的访问令牌下面的示例。