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 开发账户授权

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

查看所有标签

猜你喜欢:

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

硅谷创投课

硅谷创投课

[美]加里·维纳查克 / 林怡 / 北京联合出版社 / 2017-6 / 52

☆通用电气前CEO杰克·韦尔奇力荐,影响500强企业CMO的美国互联网意见领袖全新力作! ☆《纽约时报》榜单全新畅销书,把握来自硅谷的互联网风口浪潮! ☆70后创投鬼才,影响美国00后一代商业观的网络红人、科技公司天使投资人面对面解答你创投、管理、运营中的 一切困惑! ☆来自无数实战的真实商业意见!年轻人为什么买你的账?投资人凭什么会把钱交给你?企业家更应该做的事到底是什么?告诉......一起来看看 《硅谷创投课》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具