FOSOAuthServerBundle с FOSUserBundle – как это сделать?

В настоящее время мой проект работает очень хорошо. Я использую FOSUserBundle для управления моими пользователями. Теперь я хочу реализовать OAuth, поэтому я использую FOSOAuthServerBundle. Большинство разработчиков рекомендуют этот комплект для реализации OAuth.

Я следил за документацией FOSOAuthServerBundle. Обычно я должен добавить дополнительную информацию в свой security.yml, но я не знаю точно, что мне нужно делать …

Вот мой security.yml:

security: encoders: Symfony\Component\Security\Core\User\User: plaintext Moodress\Bundle\UserBundle\Entity\User: sha512 role_hierarchy: ROLE_ADMIN: ROLE_USER ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] providers: main: id: fos_user.user_provider.username firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false oauth_token: pattern: ^/oauth/v2/token security: false oauth_authorize: pattern: ^/oauth/v2/auth main: pattern: ^/ fos_oauth: true stateless: true anonymous: true 

Я предполагаю, что есть некоторая информация, чтобы добавить в брандмауэры, может быть?

Я действительно не знаю, как делать работы FOSOAuthServerBundle с FOSUserBundle. Раньше, только с помощью FOSUserBundle, я использовал форму входа и проверку входа в систему FOSUserBundle. Теперь, когда я установил всю базовую конфигурацию FOSOAuthServerBundle, что мне нужно сделать дальше? Какую форму я должен использовать? Какой контроль входа? Токен автоматически создается FOSOAuthServerBundle? В документации они показывают, как создать клиента … Я должен добавить этот код в свой проект? Если да … где? : /

Я нашел эту статью в Интернете: http://blog.logicexception.com/2012/04/securing-syfmony2-rest-service-wiith.html

Я попытался реализовать это, но я не могу поверить, что нам нужно добавить все эти файлы, чтобы они работали …

Если кто-то знает, как делать работы FOSOAuthServerBundle с FOSUserBundle, это было бы очень полезно.

Я только что установил этот комплект и начал играть с ним.

Я думаю, вам нужно узнать больше о том, как работает аутентификация OAuth.

Таким образом вы поймете, что механизмы FOSUserBundle не совсем такие же, как OAuth.

Ваша ссылка – лучшая информация для правильной настройки пакета.

Я использую MongoDB для хранения всех 4 необходимых документов: Client, AuthCode, RefreshToken и AccessToken

Шаг под названием «Создать новый клиент» – это, в основном, процесс «регистрации» FOSUserBundle для OAuth.

OAuth будет использовать клиент для разрешения доступа.

Основная идея OAuth – защитить API, поэтому я предлагаю вам переключить свой конфиг на анонимный: false

Затем вы увидите сообщение:

{"error":"access_denied","error_description":"OAuth2 authentication required"}

при вызове API

Идея OAuth заключается в том, чтобы получить токен доступа для вызова вашего API. Прочтите это: http://blog.tankist.de/blog/2013/07/16/oauth2-explained-part-1-principles-and-terminology/

Это когда нужно выполнить процедуру аутентификации OAuth.

Существует 5 основных методов:

 const GRANT_TYPE_AUTH_CODE = 'authorization_code'; const GRANT_TYPE_IMPLICIT = 'token'; const GRANT_TYPE_USER_CREDENTIALS = 'password'; const GRANT_TYPE_CLIENT_CREDENTIALS = 'client_credentials'; const GRANT_TYPE_REFRESH_TOKEN = 'refresh_token'; 

Чтобы узнать о каждом, найдите дополнительную документацию о OAuth RFC.

Каждый из них соответствует конкретному вызову: / oauth / v2 / token? Client_id = [CLIENT_ID] & response_type = code & redirect_uri = URL & grant_type = токен

Cf: https://github.com/FriendsOfSymfony/oauth2-php/blob/master/lib/OAuth2/OAuth2.php#L182

Также прочитайте эту ссылку: blog.tankist.de/blog/2013/08/20/oauth2-explained-part-4-implementing-custom-grant-type-symfony2-fosoauthserverbundle/

Часть «Время тестирования» объясняет, как использовать OAuth.

Я все еще работаю над этим.

Надеюсь, поможет.


Также эта ссылка указывает, как использовать FOSUserBundle User & UserManager, вероятно, использовать пароль grant_type: если вы проверяете пользователей, не забудьте установить поставщика услуг.

Ниже приведен пример использования поставщика услуг FOSUserBundle: https://github.com/FriendsOfSymfony/FOSOAuthServerBundle/blob/master/Resources/doc/index.md

 # app/config/config.yml fos_oauth_server: ... service: user_provider: fos_user.user_manager