Какое наилучшее решение для обеспечения поставщика услуг REST (предположим, что сервлет java работает в Google appengine), разрешая запросы только с iOS или Android-устройства из определенного приложения?
Предположим, у меня есть сервлет, запущенный в Google appengine, который выполняет некоторую обработку и отвечает на запрос GET с некоторыми данными JSON. И я хочу ограничить этот доступ к моему приложению, которое работает на Android и iOS.
Мои текущие решения:
if(tokenValue ==
request.getHeader(tokenKey))
на
appengine servlet. А также
response.addHeader(tokenKey,
tokenValue)
в мобильных приложениях,
код. Так что в основном только мое приложение
знайте ключ маркера.Предложите другие полезные подходы к решению этой проблемы. Предположим, что этот сервлет обслуживает только запросы GET и, возможно, использует Restlet или Jackson
Как использовать SSL-сертификат клиента? Я не пробовал это, но я это рассматриваю. Здесь страница, описывающая подход, с некоторым примером кода: http://blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html
Только 3 будут подходящим решением, если безопасность важна для вас. Это связано с тем, что любой, кто использует приложение, может перехватить трафик и просто воспроизвести значения против вашего веб-сервиса. SSL предлагает некоторую защиту, но хороший злоумышленник может решить, как захватить данные, если они управляют устройством. С помощью OAuth урон, наносимый злоумышленником, ограничен одним пользователем (если они не являются администратором приложения).