Мне нужно передавать данные в реальном времени с моего сервера (надеюсь, через Redis) на клиенты Android. Я пошел дальше и разработал сервер, поддерживающий модель pub/sub Redis, и это было прекрасно, пока я не понял, что подключение ненадежных клиентов к Redis — это большое «нет-нет» в соответствии с этой документацией https://redis.io/topics/безопасность. (моя вина в том, что я не проводил надлежащих исследований перед разработкой)
Поскольку у Redis почти нет чувства безопасности, я изо всех сил пытаюсь понять, как подключить ненадежных клиентов к моему серверу. Я понимаю, что есть другие брокеры сообщений, такие как RabbitMQ, которые действительно лучше поддерживают аутентификацию и авторизацию. Это будет мой запасной вариант, но мне интересно, есть ли способ безопасного подключения ненадежного клиента к моему серверу Redis? Возможно, каким-то образом проксируя Redis?
Казалось бы, это невозможно. Redis действительно просто не предназначен для использования ненадежными клиентами. Создание простого прокси-сервера также не было вариантом, потому что, даже если бы я мог аутентифицировать пользователей, я не смог бы применить какой-либо контроль доступа. В результате конечные клиенты могут публиковать сообщения на моем сервере и т. д.
В итоге я создал сервер SignalR WebSocket, к которому должны подключаться клиенты. Этот сервер будет подписываться на правильные каналы в Redis и выступать в качестве уровня безопасности.