ADN Open CIS
Сообщество программистов Autodesk в СНГ

17/04/2017

Простой пример 2-legged службы

Некоторые приложения, использующие Viewer, выполняются только на стороне клиента. Тем не менее, вам по-прежнему нужен токен с правами только для чтения, чтобы получить доступ к файлам в вашем bucket, чтобы создать экземпляр просмотрщика. Не размещайте свои учетные данные в интерфейсе пользователя и используйте вызовы ajax. Когда ваши учетные данные скомпрометированы, каждый может получить доступ ко всем вашим файлам на серверах Autodesk.

Ниже представлена очень простая служба токена в Node.js, которая предоставляет токен с правами только для чтения.

Код - JavaScript: [Выделить]
  1. package.json
  2. {
  3.   "name": "autodesk-auth-token",
  4.   "version": "1.0.0",
  5.   "description": "Простая служба, которая обслуживает токен только для чтения при помощи API Autodesk. Этот пример получает 2-legged токен. ",
  6.   "main": "index.js",
  7.   "dependencies": {
  8.     "express": "^4.15.2",
  9.     "request": "^2.81.0"
  10.   }
  11. }
  12. index.js
  13. 'use strict'
  14.  
  15. const express = require('express');
  16. const request = require('request').defaults({
  17.   baseUrl: 'https://developer.api.autodesk.com'
  18. });
  19.  
  20. const app = express();
  21.  
  22. // помещаем это в конфигурацию среды
  23. let autodesk_client_id = process.env.autodesk_client_id || '';
  24. let autodesk_client_secret = process.env.autodesk_client_secret || '';
  25. let port = process.env.PORT || 3000;
  26.  
  27. let expireTime = Date.now();
  28. let token = '';
  29.  
  30. let options = {
  31.   method: 'POST',
  32.   url: '/authentication/v1/authenticate',
  33.   headers: {
  34.     'content-type': 'application/x-www-form-urlencoded'
  35.   },
  36.   form: {
  37.     client_id: autodesk_client_id,
  38.     client_secret: autodesk_client_secret,
  39.     grant_type: 'client_credentials',
  40.     scope: 'data:read'
  41.   }
  42. };
  43.  
  44. app.get('/', (req, res) => {
  45.   if (!token || Date.now() > expireTime) {
  46.     request(options, (e, r, body) => {
  47.       token = body; // используем всё тело в качестве токена
  48.       expireTime = Date.now() + JSON.parse(body).expires_in;
  49.       console.log(token);
  50.       res.send(token);
  51.     });
  52.   } else {
  53.     res.send(token);
  54.   }
  55. });
  56. app.listen(port);

Для развертывания на AWS или heroku, установите переменные process.env.autodesk_client_id и process.env.autodesk_client_secret в переменных среды, и служба должна будет вернуть для вас токен с правами только для чтения.

Источник: https://forge.autodesk.com/blog/simple-2-legged-token-service-sample

Автор перевода: Дмитрий Емельянов

Обсуждение: http://adn-cis.org/forum/index.php?topic=

Опубликовано 17.04.2017