повысить аутентификацию клиента asio

У меня есть клиентское приложение на языке c ++, которое обменивается данными по сети (с boost asio), и я планирую распространить это клиентское приложение среди своих клиентов. Моя проблема в том, что я не знаю, как предотвратить запрос соединения от других приложений, то есть как я могу убедиться, что только мое клиентское приложение может подключиться к моему серверу. Я думаю, что нет способа сделать это без установления соединения, чем лучший способ проверить, что запрос поступил от моего клиента?

1

Решение

Ты можешь использовать ASIOвстроенный SSL способность. Итак, вы генерируете сертификаты для каждого сервера и клиентские сертификаты. Таким образом, вы можете проверить клиентский сертификат на сервере в момент подтверждения SSL. В качестве бонуса ваш трафик будет зашифрован и защищен SSL. Клиенты могут проверить сервер не подделка; Сервер может проверить, авторизованы ли клиенты.

5

Другие решения

Да, вы должны принять соединение, чтобы узнать, из вашего приложения или нет.
Вы можете использовать трехстороннее рукопожатие на этапе подключения:

  1. Клиент подключается к серверу. Сервер отправляет определенный
    значение (целое число, строки или что-то еще) для нового клиента.
  2. Клиент обрабатывает это значение, вычисляет новое с ним и отправляет
    новое значение для сервера.
  3. Сервер проверяет, верно ли возвращенное значение или нет.

У клиента будет тот же метод вычисления, что и у сервера. Другие приложения не смогут использовать ваш сервис, если они вернули неверное значение.

0

По вопросам рекламы [email protected]