Подключаете приложение iPhone к безопасному RESTful API?

1

Я создаю RESTful API в Python с базой Pylons, обслуживая его с Apache2 и mod_wsgi, и хотел бы подключить его к iPhone-приложению. У меня очень мало опыта работы с HTTPS, SSL и сертификатами, и мне интересно, как я буду защищать свой API.

Как я могу убедиться, что API обслуживается через HTTPS? Нужно ли, как в этом примере, установить SSL-сертификат? Если я подписываю сертификат SSL через авторитет, не признанный iOS (например, CACert.org, и главным образом потому, что он бесплатный), повлияет ли это на способность моего приложения связываться с моим сервером? Как другие решили эту проблему для обеспечения связи между веб-интерфейсом API RESTful и iPhone?

Кроме того, как OAuth вписывается во все это?

Теги:
iphone
ssl

2 ответа

1
Лучший ответ

Это действительно зависит от того, что вы подразумеваете под "защитой" вашего API.

Вы имеете в виду, что вы хотите A) защитить его, чтобы неавторизованные люди не могли получить доступ к API или B), вы имеете в виду, что вы хотите некоторый уровень шифрования данных, передаваемых между клиентом и сервером?

Если ответ B или оба, то вам обязательно нужно будет получить сертификат SSL и установить его на сервере. Большинство сертификационных органов имеют руководства о том, как это сделать.

Я не уверен, что вы подразумеваете под "авторитетом, не признанным iOS", но вы все равно, вероятно, должны рассмотреть вопрос о том, чтобы выставить тесто для сертификата от признанного авторитета. По-прежнему не помешает попробовать CACert.org, хотя если они предлагают бесплатные сертификаты. Я не могу понять, есть ли какие-либо проблемы с точки зрения возможности взаимодействия между сервером и клиентом.

Что касается защиты вашего API от несанкционированных клиентов, вы можете проверить OAuth (см. Http://oauth.net/). Для OAuth существуют различные библиотеки Python. Например, https://github.com/simplegeo/python-oauth2. Единственное, что вы, возможно, захотите рассмотреть, - это разумная кривая обучения, когда дело доходит до реализации OAuth.

Вторая ссылка выше демонстрирует простой клиент OAuth, а также имеет пример кода для трехстороннего процесса аутентификации.

  • 0
    Чтобы заставить работать OAuth, вам вообще не нужен SSL?
  • 0
    Нет, вам не нужен SSL как таковой. Это действительно зависит от того, что вы подразумеваете под защитой своего API. Как я уже упоминал, OAuth может помочь предотвратить доступ неавторизованных клиентов к вашему API. Однако без SSL связь между клиентом и сервером все равно будет незашифрованной. Может быть, вам нужна комбинация OAuth / SSL?
1

Вы можете обрабатывать сертификаты программно в iOS. Вы даже можете использовать самозаверяющие сертификаты, если ваш код подтверждает отпечаток. Я не могу вспомнить подробности с головы, но я знаю, что вы можете использовать didReceiveAuthenticationChallenge для этого.

В долгосрочной перспективе проще просто купить сертификат (cacert.org не будет делать).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню