У меня проблема с тем, чтобы мой секретный ключ API был доступен по всему миру на потенциально тысячах мобильных устройств. Он может быть легко скомпрометирован и использован хакером в злонамеренных целях.
Итак, какие варианты для меня? Я бы предположил, что частный сервер имеет секретный ключ API и веб-службу, которая инкапсулирует все вызовы методов. Поэтому вместо того, чтобы мобильное устройство имело секретный ключ и делало что-то вроде:List<Friends> = service.GetFriends(secretKey);
Если мой секретный ключ API скомпрометирован и используется для рассылки спама/злоупотреблений, я должен прекратить использование для всех своих пользователей, оставив мое приложение мертвым в море.
Итак, моя идея состоит в том, что я могу использовать уникальный идентификатор мобильного устройства и делать следующее:List<Friends> = myService.GetFriends(deviceID);
Конечно, хакер-злоумышленник может просто вызвать мою веб-службу с поддельным идентификатором устройства, но, по крайней мере, теперь у меня есть возможность внести идентификатор устройства в черный список. Это также приводит к некоторым потенциальным проблемам с пропускной способностью, но это не вызывает особого беспокойства.
Об истинной PKI, вероятно, не может быть и речи, поскольку целевое устройство не обрабатывает клиентские HTTP-сертификаты в текущей версии.
Любые другие хорошие идеи?