Веб-сервис Аутентификация и управление идентификацией пользователя
Вопрос
Моя команда и меня в настоящее время работают над довольно большим проектом. Мы работаем над онлайн-игрой, которая будет доступна (на данный момент), двумя способами: -Via веб-браузер, приложение Full JavaScript (сторона клиента), полный Ajax (в основном означает, что интерфейс UI будет управляться в стороне js). -Via Приложение iPhone (UI будет управляться самим приложением).
между двумя различными приложениями, основная логика остается прежней, поэтому я полагаю (я мог бы ошибаться), что лучшее решение было бы создать веб-службу (если возможно, используя стандарты, такие как RESTFLAY или REST), способные Предоставьте все необходимые операции.
Следуя этой логике, я столкнулся с проблемой: управление аутентификацией и идентификацией пользователя. Это задает задачу, поскольку пользователи приложений должны быть аутентифицированы для преформы определенных операций.
Я посмотрел в WS-Security, но это, очевидно, требует хранения паролей, незашифрованных на сервере, что не является приемлемым! Затем я посмотрел в ОАУТ, но на первый взгляд это казалось много работы, чтобы настроить и не особо подходя к моим потребностям (то, как приложения должны быть приняты, не радует меня, поскольку это будет мое приложение только Использование веб-службы, а не внешнее приложение). Я прочитал и слышал о многих других способах делать то, что я хочу, но, если честно, я немного запутался, и я не знаю, какая информация надежна и что нет.
Я хотел бы отметить, что я использую symfony2 для бэкэнда и jQuery для JavaScript клиента JavaScript. Кроме того, я хотел бы получить подробный, пошаговый ответ, потому что я действительно путаю со всеми, что я прочитал и слышал.
Спасибо за ваше время, и я надеюсь, что кто-то может помочь мне, так как это довольно срочно.
Добрый вечер
Решение
Я не совсем уверен, что ответит на ваш запрос, но поскольку интернет-интерфейс всегда будет обрабатываться на стороне клиента, я думаю, что вы можете использовать аутентификацию HTTP без гражданства:
Это брандмауэр в генеракодицетагкоде:
security:
firewalls:
api:
pattern: ^/api/ # or whatever path you want
http_basic: ~
stateless: true
.
, а затем идея в основном заключается в том, что на сервере вы используете обычные поставщики пользователей, кодировщики и athnot для достижения максимальной безопасности, а на клиенте вы отправляете заголовки аутентификации HTTP, например, в jQuery:
$.ajax("...", {
username: "Foo",
password: "bar"
});
.
Обратите внимание, что, поскольку аутентификация нестандартна (файл cookie никогда не создается), заголовки должны быть отправлены с каждым запросом, но я рисунок, поскольку приложение почти полностью клиентская сторона, это не проблема ,
Вы также можете проверить Symfony2 Руководство по безопасности для получения дополнительной информации о том, как Настройка http-аутентификации. Также обязательно заберуте доступ HTTPS в вашем ACL, поэтому запросы, содержащие учетные данные, защищены (security.yml
в ваших определениях ACL).