Есть некое API для мобильных приложений, которое нужно защитить. Хочется подписывать запросы чтобы при обращении к бэкенду отбрасывать неподписанные запросы или запросы от заблокированных клиентов.
Есть ли готовые практики, кейсы для таких задач?
Сейчас вырисовывается следующая схема, но мне в силу особенностей мышления сложно оценить ее достаточность:
Приложение при первом обращении к бэкенду получает api-key. Кроме того, в приложение зашита строка secret, которую знает только клиент и бэкенд и которая не передается между ними.
После получения api-key приложение подписывает каждый запрос строкой, сгенерированной на основе api-key + secret + что-то еще.
sign = hmac-sha1( api-key + secret + md5(request data) )
То есть в запросе передается api-key (по нему идентифицируется устройство/юзер) и sign. Бэкенд, зная sign и secret, может проверить подпись на валидность.
Этого достаточно или полный фуфел? Может, достаточно просто устанавливать соединение по HTTPS и всё?