Реализация управления системой контроля доступа (СКУД) через мобильное приложение
Интеграция мобильного приложения с СКУД — задача, которая упирается в несовместимость протоколов. Контроллеры 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.







