#c #dll
#c #dll
Вопрос:
Я создал DLL-файл, который обрабатывает множество запросов API (в настоящее время около 20-30 в секунду) из разных приложений. Для доступа к API вы должны быть внесены в белый список. В прошлом это делалось через белый список IPv4 / v6, что является плохим подходом для систем с динамическим / меняющимся IP.
Я решил использовать токеновый подход, пользователь должен был бы ввести токен в конфигурационный файл. Однако постоянное «простое» чтение файла конфигурации (с использованием config4cpp) для каждого запроса является узким местом.
У меня вроде как закончились идеи, как решить эту проблему. Существуют ли более эффективные подходы? Возможно ли сохранить токен в памяти до следующего запроса?
Благодарен за любой совет 🙂
Комментарии:
1. Насколько безопасным это должно быть? Вы могли бы сохранить
unordered_map<ip, timestamp>
, чтобы отслеживать, когда клиент «вошел в систему». Запрашивайте у клиента учетные данные, только если их нет в map или временная метка слишком старая.2. Это не обязательно должно быть слишком безопасным. Я только хочу иметь возможность сопоставлять каждый запрос с (ответственным) пользователем / сервером. В настоящее время я думаю о создании некоторого простого хэша на основе аппаратного обеспечения вызывающего приложения. Нужно только найти очень простой, производительный метод хеширования и протестировать его.
3. Вы могли бы сделать это или просто позволить клиенту аутентифицировать себя один раз и сохранять эту аутентификацию действительной в течение определенного периода времени, используя хэш, основанный
unordered_map
на том, что я предложил. Возможно, вы могли бы вместо этого ввести туда mac-адрес:unordered_map<mac, timestamp>