Сервер Symfony2 Oauth2 с предоставлением кода авторизации, простейший Symfony2 и клиент Angular JS

#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 (используя этот пакет)