Я хотел бы предоставить API RESTful, защищенный OAuth2, используя FOSOAuthServerBundle, и я не уверен в том, что мне нужно делать.
Я выполнил основные шаги из документации, но некоторые вещи отсутствуют, и я не могу найти полный пример того, что мне нужно.
Итак, я попытался понять, насколько я мог этот пример реализации (единственный, который я нашел), но есть вещи, которые я до сих пор Не понимаю.
Во-первых, зачем нам нужна страница входа в API? Предположим, что мой клиент - приложение для iPhone или Android, я вижу интерес к странице входа в приложение, но я думаю, что клиент должен просто вызвать веб-сервис из API, чтобы получить его токен, не так ли? Итак, как реализовать автоматизацию и токен, предоставляя через конечную точку REST?
Затем документация сообщает, чтобы написать этот брандмауэр:
oauth_authorize:
pattern: ^/oauth/v2/auth
# Add your favorite authentication process here
И я не знаю, как добавить процесс аутентификации. Должен ли я писать свой собственный, например, после этот учебник или я совершенно не прав?
В глобальном масштабе, может ли кто-то потратить время на объяснение процесса, необходимого после пяти шагов в документах, для обеспечения защищенного RESTful API OAuth2? Было бы очень приятно...
ИЗМЕНИТЬ после ответа @Sehael:
У меня все еще есть вопросы, прежде чем он станет идеальным...
Что представляет собой "Клиент" здесь? Для exemaple следует создать клиент для iPhone-приложения, а другой - для Android-приложения? и мне нужно создать новый клиент для каждого экземпляра, который хочет использовать API? Какова наилучшая практика в этом случае?
В отличие от вас, я не использую процесс OAuth для переднего веб-сайта, но "классический" способ symfony. Вам это кажется странным, или это нормально?
В чем польза refresh_token? Как его использовать?
Я попытался проверить свои новые защищенные OAuth службы. Я использовал расширение chrome POSTman, которое поддерживает OAuth 1.0, делает ли OAuth2 похожим на OAuth1 достаточно для тестирования с помощью POSTman? Существует поле "секретный токен", которое я не знаю, как заполнять. Если я не могу, я был бы рад видеть ваш (@Sehael) класс PHP, как вы предложили. /Edit: OK Я думаю, что нашел ответ для этого. Я просто добавил access_token
как параметр GET с маркером как значением. Кажется, это работает. К сожалению, мне приходится делать обратное вспять на код связки, чтобы найти это вместо того, чтобы читать его в документации.
В любом случае, спасибо большое!