У меня была та же проблема, и я решил ее, создав собственный API (PHP) в сочетании с прокси-сервером (NodeJS). Каждый запрос от моего клиента отправляется на прокси-сервер, прокси-сервер проверяет запрос и передает его моему API. API разрешает только запросы от прокси-сервера его IP.
Сначала пользователь проходит аутентификацию на прокси-сервере с помощью заголовка авторизации, в случае успеха пользователь получит 2 токена. Токен доступа и токен обновления. Маркер доступа используется для отправки запросов и живет в течение 5 минут в моем случае. Когда срок действия маркера доступа истек, пользователь может обновить токен с помощью маркера обновления, который существует вечно.
Создайте глобальный модуль в вашем приложении, который обрабатывает вашу логику ключей, храните ваши ключи в локальных свойствах и используйте их, когда пользователь перезапускает приложение, чтобы им не приходилось перезаписывать каждый раз.
Если вы используете это с HTTPS, ключи не могут быть проанализированы, и вы не сможете получить ключи, если декомпилируете приложение, потому что они хранятся на устройстве пользователя, а не «жестко закодированы» в самом приложении. Технически, если у злоумышленника есть устройство пользователя, он может декомпилировать приложение и получить ключи. Я знаю это, но если у него уже есть доступ к физическому устройству, он все равно сможет использовать любое приложение.
Прокси-сервер также регистрирует каждый входящий запрос и уведомляет меня по электронной почте, когда кто-то пытается проделать трюки (я создал это сам). Я использовал следующие модули:
- Экспресс
- * 1014 протокол HTTPS *
- http-proxy (передает запрос на мой API)
- jsonwebtoken (генерирует и проверяет токены доступа / обновления)