尝试在 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 调用从前端(浏览器端)获取必要的访问令牌下面的示例。