Как защитить REST API от невалидных запросов?
Все что выполняется на стороне клиента, можно разобрать и вытащить секретную информацию. Поэтому любое приложение работающее на стороне клиента по определению является небезопасным и авторизовывать его нет смысла. Это можно будет подделать.
То, что вы хотите можно сделать только с клиентами работающими на стороне сервера.
Я думаю, что вам стоит еще раз переосмыслить свою задачу. Возможно стоит описать ситуацию подробнее, почему вы пытаетесь совместить несовместимое, с одной стороны закрытый API и с другой публичное мобильное приложение.
Это так не работает. Нужно выбирать из двух:
1. Публичный API -> Публичный клиент (выполняется на клиенте).
2. Закрытй API -> Закрытый клиент (выполняется на сервере).
Возможно использовать IMEI телефона для того, чтобы проверять телефон ли это. Вот здесь есть база IMEI'ов и API к нему www.imei.info/api/imei/docs Однако существуют программы для замены IMEI, а также для его генерации.