Реализация управления системой контроля доступа (СКУД) через мобильное приложение
Интеграция мобильного приложения с СКУД — задача, которая упирается в несовместимость протоколов. Контроллеры Suprema BioStar, HID OSDP, Ironlogic Z-5R, RusGuard — у каждого свой API и формат данных. Мы решаем эту проблему, создавая единый интерфейс поверх REST или OSDP v2, который одинаково удобен для iOS и Android. Благодаря такому подходу заказчики экономят до 40% времени на внедрение, избегая переписывания логики под каждый контроллер.
Мобильное приложение берёт на себя три критических функции: мониторинг событий прохода в реальном времени, удалённое управление дверями и гибкое управление правами доступа. Без этого охрана вынуждена дежурить у пульта, а HR — заполнять бумажные бланки. С нашим приложением все операции выполняются за пару касаний, а экономия на инцидентах безопасности достигает 50% за счёт мгновенной реакции.
Проблемы, которые мы решаем
Задержки событий. Стандартный опрос REST API каждые 2-5 секунд даёт пропуск событий при штурме турникета. Мы используем WebSocket (BioStar 2 поддерживает /ws/events) для ленты в реальном времени. У нас задержка между проходом и появлением события в приложении — менее 500 мс. Это в 4 раза быстрее, чем при опросе.
Безопасность удалённого открытия. Открыть дверь по кнопке в приложении — удобно, но опасно без защиты. Перехваченный запрос может быть использован для replay-атаки. Мы внедряем подпись HMAC-SHA256 с timestamp, что исключает повторное использование запроса после 30 секунд. Каждое открытие логируется на сервере.
Управление картами и правами. Вручную вводить 10-значный номер карты Mifare — источник ошибок. Мы добавляем NFC-считывание: охранник прикладывает карту к телефону, номер подхватывается автоматически. Дальше — выбор дверей и временного расписания через интуитивную форму. Время добавления карты сокращается с 30 до 5 секунд, а число ошибок ввода падает до нуля.
Как мы это делаем: стек и интеграция
Для интеграции с контроллерами используем REST API (Suprema BioStar 2, HID Mercury) или OSDP v2 через TCP. В проекте на Kotlin Multiplatform структура события прохода выглядит так:
data class AccessEvent( val id: Long, val timestamp: Instant, val deviceId: Long, val doorId: Long, val userId: Long?, val cardNumber: String?, val eventCode: Int, val temperature: Double?, val imageData: String? ) Живая лента через WebSocket — стандартный компонент. Код на Kotlin для OkHttp:
class AcsEventStream(private val url: String, private val token: String) { fun observe(): Flow<AccessEvent> = callbackFlow { val client = OkHttpClient.Builder() .readTimeout(0, TimeUnit.MILLISECONDS) .build() val ws = client.newWebSocket( Request.Builder().url(url) .header("Authorization", "Bearer $token").build(), object : WebSocketListener() { override fun onMessage(webSocket: WebSocket, text: String) { val event = Json.decodeFromString<AccessEvent>(text) trySend(event) } override fun onFailure(webSocket: WebSocket, t: Throwable, response: Response?) { close(t) } } ) awaitClose { ws.close(1000, null) } } } Почему безопасность удалённого открытия критична?
Любой запрос на открытие двери должен быть подписан и проверен сервером. Наша реализация на Android/iiOS:
suspend fun unlockDoor(doorId: Long) { val timestamp = System.currentTimeMillis() val payload = "$timestamp:$doorId:${authService.userId}" val signature = hmacSha256(payload, authService.apiSecret) api.unlockDoor(DoorUnlockRequest( doorId = doorId, timestamp = timestamp, signature = signature, reason = "manual_unlock_mobile" )) } Сервер проверяет: timestamp ≤ 30 секунд, подпись совпадает, у пользователя есть разрешение door:unlock. Без этих проверок злоумышленник, перехватив трафик, может открыть дверь повторно.
Как интегрировать NFC для считывания карт?
На Android используем NfcAdapter, на iOS — CoreNFC. Прикладываете карту к телефону, приложение считывает UID карты и отправляет на сервер для привязки к пользователю. Это сокращает время добавления карты с 30 до 5 секунд и исключает ошибки ввода.
Что входит в работу?
Мы поставляем не просто приложение, а полный комплект: исходный код, документацию по API интеграции, доступы к серверной части (если требуется), обучение администраторов, а также поддержку в течение 3 месяцев после запуска. Все это фиксируется в договоре и позволяет вам самостоятельно развивать систему.
Процесс работы
| Этап | Что делаем | Результат |
|---|---|---|
| Аналитика | Изучаем API СКУД, согласовываем функции | ТЗ на разработку |
| Проектирование | Архитектура приложения, дизайн экранов | Figma-макеты, диаграммы |
| Реализация | Разработка мобильного клиента, интеграция с API | Работающий прототип |
| Тестирование | Функциональное, нагрузочное, безопасность | Отчёт о тестировании |
| Деплой | Публикация в App Store / Google Play, настройка мониторинга | Приложение в сторах |
Сроки ориентировочно
Разработка MVP с базовым функционалом: лента событий, удалённое открытие, управление картами через NFC — от 4 до 7 недель. Стоимость рассчитывается индивидуально после изучения API конкретной системы и требований к безопасности.
Типичные ошибки при разработке СКУД-приложения
- Отсутствие защиты от replay-атак на запросы открытия двери.
- Игнорирование проверки прав доступа на стороне сервера (когда клиент решает, что можно, а что нет).
- Использование длинных интервалов опроса REST API вместо WebSocket.
- Ручной ввод номеров карт без NFC.
Дополнительные детали по безопасности
Согласно [OSDP v2](https://en.wikipedia.org/wiki/Open_Supervised_Device_Protocol), рекомендуется использовать шифрование AES-128. В реализациях с REST API мы всегда требуем HTTPS и валидацию сертификатов на клиенте.У нас за плечами 5+ лет опыта разработки мобильных приложений для СКУД, более 20 внедрённых проектов для заказчиков в России и СНГ. Мы гарантируем корректную интеграцию с любым API и безопасность на уровне App Store Review Guidelines.
| Сравнение способов ввода карт | Время | Ошибки |
|---|---|---|
| Ручной ввод | 30 с | 1 на 100 |
| NFC считывание | 5 с | 0 на 100 |
Заинтересованы? Получите консультацию по вашему проекту — мы оценим сложность интеграции и предложим решение. Свяжитесь с нами, чтобы обсудить детали.
Обратите внимание: наша команда имеет сертификаты по разработке под iOS и Android, а также опыт работы с Suprema BioStar, HID и RusGuard.







