В настоящее время мой проект работает очень хорошо. Я использую 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