Інтеграція Azure IoT Hub у мобільний IoT-додаток

Уявіть: ваш мобільний додаток керує сотнями IoT-пристроїв — від розумних ламп до промислових датчиків. Кожен пристрій надсилає телеметрію в Azure IoT Hub. Але варто один раз вбудувати SAS Connection String в APK — і зловмисник отримає повний доступ до хабу. Ми зіткнулися з цим на одному з проєктів:

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція Azure IoT Hub у мобільний IoT-додаток
Середній
~3-5 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    897
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1218
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    600

Уявіть: ваш мобільний додаток керує сотнями IoT-пристроїв — від розумних ламп до промислових датчиків. Кожен пристрій надсилає телеметрію в Azure IoT Hub. Але варто один раз вбудувати SAS Connection String в APK — і зловмисник отримає повний доступ до хабу. Ми зіткнулися з цим на одному з проєктів: клієнт втратив контроль над 200 пристроями за годину. Рішення — бекенд-проксі з короткоживучими SAS-токенами. За 5+ років ми реалізували понад 20 проєктів з інтеграції Azure IoT Hub і виробили еталонний підхід: генерувати тимчасові ключі на захищеному сервері, а не зберігати їх у клієнті. Такий підхід не тільки запобігає витоку, але й спрощує управління доступом для тисяч пристроїв. Економія на операційних витратах за рахунок автоматизації досягає 35%. Отримайте консультацію — ми підберемо оптимальну архітектуру для вашого сценарію.

Як правильно організувати аутентифікацію в Azure IoT Hub?

SAS Connection String — це root credentials. Його вбудовування в клієнт — критична помилка. Правильне рішення — бекенд-проксі: користувач авторизується у вашій системі, бекенд генерує SAS-токен з обмеженим терміном дії (8–24 години) для конкретного device ID і повертає його клієнту.

Генерація токена на Node.js:

const crypto = require('crypto'); function generateSasToken(resourceUri, signingKey, expiresInMins) { const expiry = Math.ceil(Date.now() / 1000 + expiresInMins * 60); const stringToSign = `${encodeURIComponent(resourceUri)}\n${expiry}`; const hmac = crypto.createHmac('sha256', Buffer.from(signingKey, 'base64')); const signature = hmac.update(stringToSign).digest('base64'); return `SharedAccessSignature sr=${encodeURIComponent(resourceUri)}&sig=${encodeURIComponent(signature)}&se=${expiry}`; } 

Мобільний клієнт отримує токен через ваш API і підключається до IoT Hub через AMQP over WebSocket або MQTT. На Flutter використовуємо mqtt_client з SAS-токеном у полі password. На React Native — azure-iot-device через react-native-tcp-socket або rhea для AMQP 1.0. Безпека на рівні: навіть при перехопленні токена зловмисником він закінчується через кілька годин. SAS-токени в 3 рази простіші в управлінні, ніж X.509 сертифікати, і не вимагають PKI-інфраструктури.

Метод Складність Безпека Управління Підходить для мобільних
SAS-токени (бекенд-проксі) Низька Висока (короткоживучі) Просте (через API) Так
X.509 сертифікати Висока Дуже висока Складне (PKI) Обмежено

SAS-токени виграють за швидкістю впровадження та гнучкістю: при компрометації достатньо відкликати токен на бекенді, не перевипускаючи сертифікати на всіх пристроях. Для мобільних додатків це оптимальний вибір.

Покрокова інструкція інтеграції

  1. Розгорніть бекенд-проксі (Node.js або .NET) для генерації SAS-токенів.
  2. Налаштуйте авторизацію користувачів та прив'язку до device ID.
  3. У мобільному додатку реалізуйте отримання токена через ваш API.
  4. Підключіться до IoT Hub по MQTT або AMQP over WebSocket, передавши токен.
  5. Протестуйте надсилання D2C-повідомлень та прийом C2D.
  6. Для додаткової безпеки налаштуйте ротацію токенів кожні 12 годин.

Cloud-to-Device і Device-to-Cloud: який патерн обрати?

IoT Hub підтримує чотири основні патерни. Порівняємо їх характеристики:

Патерн Опис Ліміти Застосування
D2C (Device-to-Cloud) Телеметрія від пристрою 256 KB/msg, до 8000 msgs/day на free tier Передача показань датчиків, логів
C2D (Cloud-to-Device) Команди від хмари Черга до 50 повідомлень на пристрій Push-команди, оновлення конфігурації
Direct Methods Синхронний запит-відповідь Таймаут 1–300 сек Інтерактивні команди з підтвердженням
Device Twin Стан пристрою 8 KB на twin Читання/запис reported/desired властивостей

Для мобільного додатка, який виступає в ролі «віртуального пристрою», D2C використовується для надсилання команд від користувача, C2D — для отримання сповіщень від хмари. Direct Methods ідеальні, коли потрібно гарантувати виконання та отримати результат синхронно. Середня затримка D2C-повідомлень становить 200 мс, C2D — менше 1 секунди.

Як безпечно отримувати стан пристрою через Device Twin?

Device Twin зберігає desired і reported properties. Помилка — звертатися до нього безпосередньо з мобільного додатка з IoT Hub connection string. Правильно — через власний API-шар, який проксіює запити та перевіряє права користувача. Ми реалізуємо цей шар на Node.js або .NET, інтегруючи його з вашою системою аутентифікації. Запит до GET /twins/{deviceId} через REST API IoT Hub з Bearer-токеном — безпечно та прозоро.

Типові помилки при роботі з Device TwinНе використовуйте reported properties для чутливих даних — вони видимі всім з доступом до twin. Зберігайте паролі та ключі в окремому сховищі. Завжди валідуйте desired properties на стороні пристрою, щоб уникнути некоректних конфігурацій.

Push-сповіщення через Azure Notification Hubs

Push-сповіщення за IoT-подіями організовуються через Event Grid + Azure Function + Azure Notification Hubs. Event Grid підписується на події IoT Hub (наприклад, Microsoft.Devices.DeviceTelemetry), тригерить Function, та надсилає push через Notification Hubs на FCM або APNs. На Flutter інтегруємо через firebase_messaging (для FCM) — Notification Hubs керує реєстраціями та таргетингом, а доставку делегує платформі. Тегування реєстрацій за userId дозволяє надсилати push конкретному користувачеві без зберігання токенів на стороні IoT-бекенду.

Що входить в роботу

  • Архітектурна документація — схема потоків даних, вибір протоколів (MQTT/AMQP), модель безпеки.
  • Розгортання та налаштування Azure IoT Hub — вибір tier, масштабування, моніторинг через Azure Monitor.
  • Реалізація бекенд-проксі для генерації SAS-токенів.
  • Інтеграція SDK в мобільний додаток (iOS/Android/Flutter/React Native).
  • Налаштування Device Twin та Direct Methods.
  • Інтеграція push-сповіщень через Event Grid та Notification Hubs.
  • Тестування — навантажувальне (до 1000 concurrent devices), безпеки, сценарії помилок.
  • Навчання команди — документація, код-рев'ю, підтримка 2 тижні.

Докладніше про аутентифікацію — у документації Azure IoT Hub.

Терміни

Базова інтеграція (SAS-токени, MQTT/AMQP підключення, Device Twin) — 2–3 тижні. Додавання Direct Methods, Event Grid, push-сповіщень — ще 2 тижні. Підсумкова вартість розраховується індивідуально, залежно від кількості пристроїв, тиру IoT Hub та частоти повідомлень.

Отримайте консультацію щодо вашого проєкту — ми оцінимо складність і запропонуємо оптимальне рішення. Залишайте заявку, і ми зв'яжемося протягом дня.