oauth-2.0 - Forge Autodesk - 2 腿 OAuth
问题描述
我们收到客户的询问,希望从我们的应用程序中启用 Autodesk 模型查看器。第一步是实现OAuth2
身份验证(2 条腿)。我遵循了 Forge Autodesk 教程,但这对我来说是全新的,我无法将其配置为工作。我确实从我们的应用程序http
请求(使用jQuery
),传递client_id
and client_secret
, grant_type 和一个范围。在查看开发人员菜单(F12)时 - 我可以看到该请求正在访问他们的服务器并返回access_token
,过期时间,授权“Bearer”,状态为200
。到目前为止,一切都很好。
我知道现在我需要回调 API 并传递我收到的这个 access_token。这是我丢失的地方:控制台向我显示错误,Cross origin ...并且http请求的成功部分没有触发(在http请求成功部分我试图将用户重定向到我们刚刚收到的模型查看器url + access_token )。但它永远不会着火。正在挖掘论坛和教程,但找不到任何好的示例或解释我做错了什么。下面是我的代码示例:
$.post("https://developer.api.autodesk.com/authentication/v1/authenticate",
{
client_id: 'here_is_a_client_id',
client_secret: 'here_is_a_client_secret',
grant_type: 'client_credentials',
scope: 'viewables:read'
},
function(data, status){
console.log("Data: " + data);
window.location.href = 'https://viewer.autodesk.com/id/here_is_a_long_id_number&Authorization=Bearer&' + data;
});
任何帮助高度赞赏。此外,我尝试使用 来遵循 Autodesk 教程Node.js
,但是在看到access_token
从他们的服务器返回后,我无法进行回调并将其附加access_token
到它。所有这些都是新手Authorization/Authentication/Tokens
,所以无法弄清楚它的工作方式。提前致谢。
解决方案
我可以建议您如何避免此跨域错误,但在客户端授权您的应用程序至关重要,而且非常危险。公开您的客户端密钥将使每个人都有权访问您的帐户并代表您使用云积分。并访问您的所有内容。这就是您不应该采用这种方法的原因。
您不应该公开客户端密码,也不应该公开客户端上的读/写范围的访问令牌,这些都应该驻留在服务器上,并且只能驻留在服务器上。您最终可以在客户端上看到的唯一访问令牌应该是 viewables:read 范围内的令牌。即使使用 viewables:read 令牌,我也更喜欢自己使用代理(请参阅此处)。
推荐阅读
- vue.js - 在ag grid vue中发出过滤的行数
- regex - 正则表达式:匹配包含不超过三个连续 B 的字符串(不使用负前瞻)
- c - 使用 C 逐行读取多个 .txt 文件的某些列
- python - 如何在找到父 div 的同时找到子元素?
- slack-api - 如何通过永久链接标识的 API 检索 Slack 消息?
- python - BeautifulSoup - 没有类的刮桌子
- javascript - 将 Apollo React onError 从 apollo-link-error 添加到链接 const
- java - 如何逐字在TextView上附加文本android
- cygwin - 在 Cygwin 中安装 cp2k
- docker - 挂载 docker-entrypoint.sh 作为绑定卷