Как расширить приложение Zend Framework, чтобы разрешить аутентификацию RESTful?

У меня есть приложение Zend Framework, которое я пытаюсь настроить, чтобы использовать его с приложением для iPhone. Все в моем приложении ZF требует, чтобы вы сначала вошли в систему.

В браузере вы переходите на myapp.com/auth/login и получаете форму входа. Когда вы успешно проходите аутентификацию, устанавливается файл cookie, чтобы помнить, что вы вошли в систему (я думаю, так это работает). Он также перенаправляет вас на домашнюю страницу и отображает HTML.

В идеале мое приложение для iPhone пройдет аутентификацию (каким-то образом) в моем приложении ZF и получит ответ JSON. Затем он может делать будущие запросы как аутентифицированные. Пока что мое приложение для iPhone устанавливает учетные данные для входа в качестве данных POST и отправляет на страницу входа, а приложение ZF возвращает HTML-код домашней страницы (или страницы с ошибкой проверки).

Я ищу ответы на некоторые «лучшие практики» на этот вопрос. Может быть, я задаю неправильный вопрос. Может быть, мне не нужно думать об «аутентификации RESTful». Каков наилучший подход к настройке моего приложения Zend Framework, чтобы позволить моему приложению iPhone выполнять аутентификацию и выполнять запросы?


person Andrew    schedule 25.08.2010    source источник


Ответы (1)


Возможно, вы могли бы реализовать двухстороннюю аутентификацию OAuth между вашим приложением iPhone и вашим приложением ZF.

Вы можете увидеть больше информации здесь:

http://hueniverse.com/2008/10/beginners-guide-to-oauth-part-iii-security-architecture/

http://oauth.net/

Помимо этого, всегда есть альтернатива ручной передаче значений cookie обратно на сервер. Этого должно быть достаточно:

  1. Получить заголовки ответа POST
  2. Извлеките куки из шапки и сохраните их где-нибудь
  3. Когда вы выполняете вторичный запрос к серверу, вы добавляете заголовки файлов cookie вручную.

Я думаю, что это должно сделать это.

person mobius    schedule 26.08.2010
comment
Я не могу изменить свой текущий механизм аутентификации. Кроме того, с файлами cookie все в порядке, поскольку я использую библиотеку ASIHTTPRequest для выполнения запросов на iPhone. Но я не уверен, как обрабатывать запрос в контроллере Auth. Мне нужно будет вернуть JSON, но какой JSON я должен вернуть при успешной/неудачной аутентификации? Мне нужен учебник по REST с использованием JSON и Zend Framework? - person Andrew; 26.08.2010
comment
Я не уверен, что это как-то связано с REST... Когда мне приходится работать с запросами AJAX, возвращающими JSON, я обычно проверяю, является ли это XmlHttpRequest(), и если это так, отключаю представление макета и визуализатор представления и просто повторить вывод Zend_Json::encode(). Я думаю, вы могли бы использовать параметр GET или получить пользовательский агент и на его основе вернуть JSON вместо обычного вывода. (если я правильно понял, что вы хотите сделать) - person mobius; 29.08.2010
comment
В Zend Framework 1.11 (теперь в бета-версии) добавлен помощник Zend_Http_UserAgent, который может помочь вам определить, исходит ли запрос от вашего приложения — вы можете установить собственный пользовательский агент в своем запросе и обнаружить его в ZF и вернуть только JSON. devzone.zend.com/article/ - person Clay Hinson; 15.10.2010