Forge oAuth访问Autodesk云应用数据 (三条腿token)

栏目: 后端 · 前端 · 发布时间: 5年前

内容简介:大多数朋友刚开始接触Autodesk Forge,源于‘网页浏览和管理模型’的需求,即,使用Forge的模型转换服务和前端Forge Viewer。模型的来源通常是开发者利用Forge数据管理服务创建bucket,上传模型。而这种方式意味着其应用程序(app)是该模型(数据)拥有者。简言之,典型的流程是,app发起一个请求,让用户在第三方云应用登录和授权,给予app一定范围的数据权限(此过程全部导向第三方,app无法干预和定制),当用户完成授权过程后,第三方云应用将会给app传回一个授权码(code)。借此

大多数朋友刚开始接触Autodesk Forge,源于‘网页浏览和管理模型’的需求,即,使用Forge的模型转换服务和前端Forge Viewer。模型的来源通常是开发者利用Forge数据管理服务创建bucket,上传模型。而这种方式意味着其应用程序(app)是该模型(数据)拥有者。

但在很多场景,模型源并不是app所有,而是存储和管理在某些其它云应用中,例如BOX,DropBox,百度盘,阿里云盘,或者Autodesk的BIM 360, Fusion 360。这些云应用的用户拥有其数据的权限。Forge的app 要对这些模型访问或操作的话,则要其它云应用的用户进行授权,拿到授权后,才能访问或操作数据(取决于授权的范围)。这就是通行的oAuth。在我们平常使用支付验证的时候,也是这个机制。推荐阅读这篇文章,对oAuth做了精炼的讲解:

https://www.jianshu.com/p/639...

简言之,典型的流程是,app发起一个请求,让用户在第三方云应用登录和授权,给予app一定范围的数据权限(此过程全部导向第三方,app无法干预和定制),当用户完成授权过程后,第三方云应用将会给app传回一个授权码(code)。借此,app继续调用第三方的云服务API,获取到最终的token。因为有三步走 (发起,授权,获取token),这也就是为何经常把这样的token叫做三条腿token。前面提到的创建bucket,自行上传模型相关的token,叫做两条腿token。

Forge全球资料有个教材演示如何一步步的搭建app,访问Autodesk云应用数据。

http://learnforge.autodesk.io...

本文对其中授权认证过程稍微再讲解一下:

1.首先,Autodesk的云应用也提供了oAuth机制,底层是Forge的身份认证服务(大家经常用它来获取token)。例如app访问和操作BIM 360客户的数据,发起请求的过程,还要有一个回调端口监听来自Forge认证服务传回的授权码。而回调端口必须在创建app的时候设置好。如果您的app只有两条腿token的需要,此项随便给一个scheme://host 形式的字串即可。

Forge oAuth访问Autodesk云应用数据 (三条腿token)

2.下载教材提供的完整代码工程 (以Node.js为例):

https://github.com/Autodesk-Forge/learn.forge.viewhubmodels/tree/nodejs

打开工程,定位到 config.js ,填写对应的Client ID, Client Secret 和Callback URL (一般设置为环境变量)。

3.此工程定义好的发起授权请求的端口在 oauth.js 中。它其实是拼接了一个URL,传回客户端,让客户端访问。此URL带有app的client id,授权方式 (response_type=code),回传地址和授权的权限范围。当发起请求,Forge认证服务会和app注册是对应的信息最比对,因此,必须保证client id和回传地址和app注册信息一致。

router.get('/oauth/url', (req, res) => {
    const url =
        'https://developer.api.autodesk.com' +
        '/authentication/v1/authorize?response_type=code' +
        '&client_id=' + config.credentials.client_id +
        '&redirect_uri=' + config.credentials.callback_url +
        '&scope=' + config.scopes.internal.join(' ');
    res.end(url);
});
  1. 此工程定义好的回传端口在 oauth.js 中,
router.get('/callback/oauth', async (req, res, next) => {
    //从Autodesk认证传回的授权码,用于获取最终的token
    const { code } = req.query;
    const oauth = new OAuth(req.session);
    try {
        await oauth.setCode(code);
        res.redirect('/');
    } catch(err) {
        next(err);
    }
});
  1. 客户端拿到请求地址启动访问,则会弹出Autodesk标准的登录对话框

Forge oAuth访问Autodesk云应用数据 (三条腿token)

  1. 客户输入账号密码后,Autodesk授权机制会询问,某app需要如下数据权限,是否允许。

Forge oAuth访问Autodesk云应用数据 (三条腿token)

  1. 客户允许后,授权码会发到回调函数

Forge oAuth访问Autodesk云应用数据 (三条腿token)

  1. 接着,代码调用Forge的API,得到token。

Forge oAuth访问Autodesk云应用数据 (三条腿token)

token有两个,一个是执行其他API操作的token(和两条腿的token类似,JWT),有效期也是60分钟。而另外一个是refresh token(用户授权令牌),用于保留用户授权,有效期14天。所以,当用户授权一次后,并不用每次都有授权过程,在refresh token有效期间,可以用此再调用Forge API获取新的访问token。

注:

  • 三条腿token,同样要注意高权限和低权限的token,样例代码中有演示。
  • 目前,Forge的app只允许设置一个回调函数端口。而有些其它云应用例如Azure的app,允许多个。
  • Forge可以授予app代表某用户,使用两条腿token的方式进行数据访问,在以后文章中再介绍。
  • BIM 360的数据访问,还需要一个特殊步骤,详情见 BIM 360 开发账户授权

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Programming Amazon Web Services

Programming Amazon Web Services

James Murty / O'Reilly Media / 2008-3-25 / USD 49.99

Building on the success of its storefront and fulfillment services, Amazon now allows businesses to "rent" computing power, data storage and bandwidth on its vast network platform. This book demonstra......一起来看看 《Programming Amazon Web Services》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

html转js在线工具
html转js在线工具

html转js在线工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试