Ограничить / Защищенный сервлет Google Appengine (поставщик услуг REST) ​​для использования определенным мобильным приложением - PullRequest
1 голос
/ 29 мая 2011

Какое наилучшее решение для защиты поставщика услуг REST (предположим, сервлет java, работающий на google appengine), разрешая запросы только от устройства iOS или Android от определенного приложения?

Предположим, у меня в google appengine работает сервлет, который выполняет некоторую обработку и отвечает на запрос GET с некоторыми данными JSON. И я хочу ограничить этот доступ для моего приложения, которое работает на Android и iOS.

Мои текущие решения:

  1. Используйте if(tokenValue == request.getHeader(tokenKey)) на appengine servlet. А также response.addHeader(tokenKey, tokenValue) в мобильных приложениях код. Так что в основном только мое приложение будет знать ключ токена.
  2. Используйте HTTP (s) для вышеуказанного решения, appengine поддерживает это
  3. Используйте oAuth - но мне нужно, чтобы пользователь выполнил вход в какой-либо провайдер oAuth из приложения, что усложняет приложение

Предложите другие полезные подходы для решения этой проблемы. Предположим, что этот сервлет обслуживает только запросы GET и, возможно, использует Restlet или Jackson

Ответы [ 2 ]

0 голосов
/ 27 июня 2011

Как насчет использования клиентского SSL-сертификата? Я не пробовал это, но я обдумываю это. Вот страница, которая описывает подход, с некоторым примером кода: http://blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html

0 голосов
/ 29 мая 2011

Только 3 будет подходящим решением, если безопасность важна для вас.Это потому, что любой, кто использует приложение, может перехватить трафик и просто воспроизвести значения для вашего веб-сервиса.SSL предлагает некоторую защиту, но хороший злоумышленник может решить, как захватывать данные, если они контролируют устройство.С OAuth урон, наносимый злоумышленником, ограничен одним пользователем (если он не является администратором приложения).

...