D2W: Безопасность

Возможность управления по локальной сети без “токена безопасности” по умолчанию заблокирована. Это может быть актуальным, например, при использовании локального управления в общественных местах. Токен безопасности необходимо добавлять ко всем запросам на изменение. Требование наличия токена безопасности в запросах определяется параметром lanBlock 114 = 1 или в меню устройства пунктом bLc = Lan. Отключить данное требование можно изменив параметр lanBlock 114 на значение 0 или в меню устройства пунктом bLc выбрав вариант oFF

Note

На устройстве дополнительно реализована возможность блокирования работы через облако Welrok. Данная блокировка регулируется параметром cloudBlock 115 = 1 или со страницы http://dev_ip, где dev_ip - ip адрес устройства в локальной сети.

Important

Если включены обе блокировки сразу (параметры lanBlock 114 = 1 и cloudBlock 115 = 1; пункт меню самого устройства bLc = on), то устройство заблокировано полностью для удаленного управления. Управление возможно только с кнопок.

Для аутентификации источника при отправке команд на устройство используется TOTP протокол (rfc4226, rfc6238, Interval = 30 second, Digit = 9), который формирует токен безопасности. Для формирования токена безопасности необходимо знать ключ, который представляет из себя последовательность из 16 байт. Он генерируется облаком в момент первого подключения и при каждой привязке к аккаунту. Помните, что ключ меняется если устройство привязывается снова к учетной записи личного кабинета Welrok.

Получить ключ можно только через API сервера в 2 этапа:
  1. получить токен авторизации для нужной учетной записи

  2. получить список устройств с параметрами, привязанных к данной учетной записи, где будет указан 16-тибайтный ключ.

ПОЛУЧЕНИЕ ТОКЕНА АВТОРИЗАЦИИ

POST https://app.welrok.com/api/login/

{
   "email":"user@email.com",
   "password":"myPassword"
}
Параметры:
  • email - почта зарегистрированного аккаунта приложения Welrok

  • password - пароль от аккаунта приложения Welrok

Ответ:

{
   "access_token":"9573e6a8e24b025fafbaf81dc2eccbc09b94d187",
   "user_name":"welrok",
   "is_timezone_chosen":true
}

access_token - искомый токен авторизации

Пример запроса токена авторизации:

{
   POST /api/login/ HTTP/1.1
   Host: app.welrok.com
   Accept-Language: en
   Content-Type: application/json

   {"email":"demo@welrok.com","password":"demoaccount"}
}

ПОЛУЧЕНИЕ СПИСКА УСТРОЙСТВ С КЛЮЧАМИ

GET https://app.welrok.com/api/device/ –header «Authorization: Token access_token»

Параметры
  • access_token - токен авторизации в заголовке

Ответ:

{
   "count": 4,
   "next": null,
   "previous": null,
   "results": [
               {
                  "id": 1,
                  "sn": "404CCAAAD4E8A89860609800000149",
                  "name": "D2W",
                  "":""
                  "totp_key": "AAD4EXAJX4E8A8XT"
               }
              ]
}

Поле totp_key в параметрах каждого устройства содержит искомый 16-тибайтный ключ для генерации TOTP токена.

Пример запроса списка устройств с ключами:

{
   GET /api/device/ HTTP/1.1
   Host: app.welrok.com
   Accept-Language: en
   Content-Type: application/json
   Authorization: Token 9573e6a8e24b025fafbaf81dc2eccbc09b94d187
}

ФОРМИРОВАНИЕ ТОКЕНА БЕЗОПАСНОСТИ И ЕГО ИСПОЛЬЗОВАНИЕ

После получения ключа, используя TOTP протокол (rfc4226, rfc6238, Interval = 30 second, Digit = 9), можно формировать токен безопасности и использовать его в запросах на изменение по API.

При этом в таких запросах добавляется два поля перед полями с данными:

time - время в секундах от 01.01.2000 00:00

auth - вычисленный токен безопасности.

Тогда запрос, например, для включения реле устройства, изменение яркости индикации устройства на 1 и включение блокирования изменений по API, будет выглядеть так:

{
   "sn":"404CCAAAD4E8A89860609800000149",
   "time":"634929122",
   "auth":"672201707",
   "par":[[125,7,"0"], [23,2,"1"], [114,7,"1"]]
}

Note

В 2-х кнопочных устройствах для этого надо удерживать правую кнопку с 36 по 39 секунду (через 3 секунды после сброса настроек). Индикация мигание красным. 1. Светодиод гаснет на непродолжительное время раз в секунду - блокировка включена. 2. Светодиод загорается на непродолжительное время раз в секунду - блокировка выключена.

Note

На устройстве существует страница http://dev_ip/index.html, где доступна функция подключения устройства к облаку API CLOUD CONNECT. Если пункт CLOUD CONNECT включен, связь устройства с облаком активна. Если пункт CLOUD CONNECT выключен, связь устройства с облаком отсутствует. При отключении связи с облаком гарантированно не передаются никакие данные на облако. Однако при этом не осуществляется и синхронизации времени на устройстве с облаком. Страница доступна так-же при работе утройства в режиме точки доступа. Для этого переведите устройство в режим «AP», подключитесь к нему и перейдите по ссылке: http://192.168.0.1/index.html

Note

На устройстве существует страница http://dev_ip/index.html, где доступна функция блокировки управления устройством из локальной сети или удалённо CLOUD BLOCK. Если на устройстве отключить блокировку (blc = off) (параметр [114,7,”0”]) и включить CLOUD BLOCK, то управление осуществляется только с помощью кнопок устройства или по локальной сети. Удалённое управление блокируется. В данных условиях включённый CLOUD BLOCK соответствует блокировке управления из облака (blc = cld) (параметр [114,7,”0”], [115,7,”1”]) на устройстве. Если на устройстве установить блокировку управления из локальной сети (blc = lan) (параметр [114,7,”1”]) и включить CLOUD BLOCK, то управление осуществляется только с помощью кнопок устройства. В этих условиях включённый CLOUD BLOCK соответствует блокировке любого управления по сети (blc = cld) (параметр [114,7,”1”], [115,7,”1”]) на устройстве. Страница доступна так-же при работе утройства в режиме точки доступа. Для этого переведите устройство в режим «AP», подключитесь к нему и перейдите по ссылке: http://192.168.0.1/index.html