Реализовать аутентификацию пользователя по удаленной БД с помощью веб-службы - PullRequest
0 голосов
/ 25 марта 2012

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

Это то, что я имею до сих пор:

  • Настольное (Windows) приложение на удаленном сервере. Доступ к этому приложению осуществляется локально с помощью браузера (в нем есть веб-консоль и MS SQL Server для хранения всего).
  • Приложение используется с локальными учетными данными, хранящимися в БД.

Вот что я хотел бы выполнить:

  • Предоставить доступ к некоторой информации об этой базе данных SQL Server из моего приложения. Разумеется, такой доступ должен быть предоставлен после того, как пользователь идентифицирует себя с действительными учетными данными.

Это то, что я знаю до сих пор:

  • Как создать мой веб-сервис PHP и запросить информацию из БД с помощью JSON.
  • Как работать с библиотеками AFNetworking для получения информации.
  • Как отобразить эту информацию в приложении.

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

Я, безусловно, буду благодарен за любые советы, советы или рекомендации, которые вы получили из предыдущего опыта.

Я не хочу просто реализовывать это, но вместо этого я хочу сделать это как можно лучше.

1 Ответ

2 голосов
/ 25 марта 2012

Об этом написаны книги, поэтому любой приведенный здесь ответ является неполным.Итак, я дам вам схему самой простой вещи, которая на самом деле работает.Минимальный минимум для обеспечения безопасности службы, подобной этой, - это использовать базовую аутентификацию HTTP (изначально поддерживаемую как AFNetworking, так и PHP), защищенную SSL / TLS.

Базовая аутентификация - это стандартный способ хэширования (не шифрования) учетных данных и отправки их в качестве одного из заголовков в вашем запросе (Authorization: Basic <Base64-encoded concatenated credentials>).AFNetworking поддерживает это как часть своего класса AFHTTPClient (см. Метод -setAuthorizationHeaderWithUsername:password:).PHP анализирует заголовок аутентификации в пару серверных переменных ($_SERVER['PHP_AUTH_USER'] и $_SERVER['PHP_AUTH_PW']).Отсюда вы просто проверяете комбинацию имени пользователя и пароля в своей пользовательской базе данных и разрешаете или запрещаете доступ к ресурсу.

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

Если вы хотите быть немного более изощренным, то для этого сценария также целесообразно использовать двуногий OAuth.

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