#angularjs #rest #symfony #oauth-2.0 #hello.js
#angularjs #остальное #symfony #oauth-2.0 #hello.js
Вопрос:
Что у меня есть:
-API Rest в Symfony2 с использованием friendsofsymfony / rest-bundle, предоставляющий некоторые ресурсы.
— Сервер Oauth2 в Symfony2, использующий FOSOAuthServerBundle.
-Клиент в Angular.js выполняет запросы к API Rest. В настоящее время этот клиент может войти в систему с помощью предоставления кода авторизации (используя Hello.js с пользовательским модулем), и эффективно получает токен доступа.
Я хочу, чтобы эти ресурсы API были защищены, поэтому:
-В приложении API Rest: я внедрил интерфейс AuthenticationEntryPointInterface, который я установил в качестве точки входа в security.yml, чтобы возвращать код 401 и тип содержимого application / json при отклонении.
-Клиент перехватывает 401 ответ и отправляет пользователя в форму входа.
-Клиент отправляет запросы api rest с установленным в заголовке X-Access-Token.
Мои текущие проблемы:
1) Я не уверен, следует ли мне устанавливать X-Access-Token на клиенте для запросов, я так понимаю, это правильный способ? Или я должен оставить все это на hello.js методы api?
2) Я понятия не имею, как заставить приложение API Rest «спросить» сервер oauth: «этот токен в порядке?» кому он принадлежит?» Это уже решено в Symfony?
Большое спасибо за любой ответ или руководство. Не стесняйтесь запрашивать любую дополнительную информацию или код для того, что я описываю.
Ответ №1:
Для всех, кто еще сталкивается с подобной проблемой:
1) Что касается запросов на аутентификацию клиента после входа в систему, я разрешаю hello.js привет (провайдер).методы api решают эту проблему. Он отправляет access_token в качестве параметра. Мне не нужно было устанавливать X-Access-Token в заголовке или какой-либо другой «ручной» штрих.
2) Я не нашел готового решения symfony для этого. Но это то, что я сделал:
-Настроил фильтр before для защищенного контроллера (см. документ)
-В этом методе я выполнил вызов API, хранящегося на сервере OAuth (используя этот пакет)