Вам нужен посредник-посредник или веб-сервер ...
Прежде всего, вам абсолютно необходима служба аутентификации, подключенная к вашему брокеру, для выполнения 2FA с использованием определенных тем ( /auth/RFID
, ...). Это позволит клиенту публиковать информацию (см. Ниже).
Первая проблема, которую я вижу здесь, заключается в том, что любой, кто подписан на эту тему, может прочитать информацию по этой теме, но вы можете заблокировать темы !
Затем вы можете указать (заставить) все ваши устройства публиковать информацию /proxy/mytopic
. С помощью функции clientId в mqtt служба аутентификации может проверить, отправляются ли сообщения, отправленные из этой темы, с устройства, прошедшего проверку подлинности, который ранее использовал 2FA, а затем опубликовать собственное сообщение от имени устройства /proxyout/mytopic
с идентификатором устройства в полезной нагрузке.
Теперь проблема заключается в проверке устройств, которые могут получать сообщения, если они аутентифицированы, потому что, в общем, MQTT - это массовая публикация. Служба аутентификации должна иметь список аутентифицированных устройств и проверить, имеют ли они право на прием. Опять же, шифрование полезной нагрузки и дешифрование на стороне устройства ...
Я думаю, что мое решение сильно превосходит возможности MQTT. Поэтому вы должны использовать сокет или веб-сервер ...