Здесь есть две вероятные проблемы.Первый - это аутентификация пользователя (authn) и авторизация (authz), а второй - проверка подлинности самого клиентского приложения.
Для пользователя authn / authz я бы использовал некоторую форму OAuth2 с OpenID / Connect.Конечный результат заключается в том, что вы разрешаете клиентскому приложению доступ к конечным ресурсам от имени пользователя.Для начала вам доступны бесплатные коммерческие сервисы с открытым исходным кодом.
Более проблематичной является аутентификация самого приложения.Ключи API являются здесь стандартным подходом, но это статические секреты, которые не приносят много пользы, если приложение подделано или ключ обнаружен в канале связи.Независимо от того, как сильно вы пытаетесь скрыть или вычислить секрет по мере необходимости, если ваша конечная точка достаточно ценна, кто-то выполнит работу, необходимую для извлечения и злоупотребления секретом, а затем вашим бэкэндом.
Вы на хорошемотслеживать мышление о какой-то форме протокола вызова-ответа.Каптчи - это канонический подход, но они очень раздражают пользователей мобильного приложения и не всегда очень эффективны.Я полагаю (и полностью раскрываю, как и моя компания), что подтверждение подлинности приложения с помощью криптографически безопасного вызова является надежной стратегией.Аттестационная служба бросает вызов приложению и анализирует его реакцию.Задача оценивает, был ли изменен код приложения, и оценивает состояние среды выполнения (укоренено ли приложение «работает в отладчике», такие как фрида или xposed присутствует? »И т. Д.).Приложению выдается токен с коротким сроком службы - должным образом подписанный, если аттестация проходит, в противном случае недействительным.В приложении нет секрета, и приложение не принимает решение об аутентификации;он просто передает токен вашему бэкэнду, который проверяет время жизни токена и подпись, чтобы определить подлинность приложения.Нет токена или недействительный токен, и вы знаете, что это бот или взломанное приложение.
Чтобы узнать о подлинности пользователей и приложений, ознакомьтесь с публикацией в блоге, состоящей из трех частей, начиная с Техники безопасности мобильного API , или, если вы предпочитаете видео, ознакомьтесь с Тур по мобильному телефонуНедостаточная защита API .Я рекомендую вам также проверить Approov.io , как это может быть реализовано как услуга.