Как сделать API публичного веб-сервиса приватным? - PullRequest
6 голосов
/ 16 декабря 2010

У меня есть API, который используется только мобильными приложениями для iphone, android и blackberry. Я не хочу позволять кому-либо еще использовать API или видеть SOAP API.

Как мне это сделать?

Примечание. Если я ограничу IP-адрес и сделаю веб-службу частной, мобильное приложение перестанет работать. Если я сделаю его общедоступным, тогда любой сможет увидеть веб-службу.

Ответы [ 5 ]

9 голосов
/ 16 декабря 2010

В качестве отправной точки вы можете отключить публикацию WSDL. Таким образом, только клиенты, которые уже сгенерировали прокси, смогут обнаружить и использовать веб-сервис. Конечно, служба все еще будет общедоступной, и любой, кто знает, как правильно отформатировать SOAP-запрос, сможет ее вызвать. Вторым шагом будет введение безопасности (закрытые ключи, HTTPS, клиентские сертификаты и т. Д.), Чтобы сервис мог использовать только доверенный клиент.

3 голосов
/ 16 декабря 2010

Первое предложение - ОК, остановите публикацию WSDL, если вы вообще используете это.

Но в основном вам необходимо реализовать механизм аутентификации / авторизации для вашего приложения.Должен быть метод входа в систему, чтобы

  1. проверял учетные данные - логин / пароль
  2. проверял настройки агента запросов http - если это мобильное устройство

, если дватребования соответствуют, вы авторизуете этот запрос (например, cookie) или возвращаете токен авторизации, который будет введен для всех методов API.Если токен в порядке, метод API работает .. нет - он возвращает 404, например.

0 голосов
/ 16 декабря 2010

Отключите WSDL, используйте HTTPS в сочетании с заголовками SOAP для проверки учетных данных (отправьте, например, имя пользователя и хэшированный пароль). Обратите внимание, что при использовании HTTPS эти данные шифруются, включая заголовок SOAP. Если с определенного IP-адреса зарегистрировано достаточно неправильных запросов, вы можете ненадолго занести этот IP-адрес в черный список.

0 голосов
/ 16 декабря 2010

Вы можете запустить его по HTTPS и потребовать клиент сертификатов.Это зависит от того, насколько хорошо задействованные мобильные платформы поддерживают пользовательские сертификаты клиентов.Конечно, если сертификат клиента скопирован из приложения, то вы так же открыты ...

0 голосов
/ 16 декабря 2010

Любой может понюхать трафик и подделать практически каждый его аспект. Таким образом, вы не можете это заблокировать, хотя шифрование трафика несколько поможет. То, что вы могли бы сделать, это ограничить доступ для зарегистрированных пользователей, но это может не сработать, если ваше приложение разрешает незарегистрированное использование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...