Подтвердить что ты не робот

Как настроить FOSUserBundle как поставщика проверки подлинности для моего сервера FOSOAuthServerBundle

Я пытаюсь настроить FOSUserBundle в качестве поставщика аутентификации для моего FOSOAuthServerBundle поддержкой FOSOAuthServerBundle. FOSOAuthServerBundle работал корректно до того, как я пытался реализовать FOSUserBundle и у меня также был FOSUserBundle работающий без FOSOAuthServerBundle, но я просто не могу заставить их работать вместе.

Мой вопрос заключается в том, что должно быть указано для поставщика аутентификации в брандмауэре oauth_authorize: в security.yml ниже?

# app/config/security.yml
security:
    providers:
    fos_userbundle:
        id: fos_user.user_provider.username

    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    firewalls:
        oauth_token:
            pattern:    ^/oauth/v2/token
            security:   false

        oauth_authorize:
            pattern:    ^/oauth/v2/auth

            # WHAT GOES HERE?

        api:
            pattern:    ^/api
            fos_oauth:  true
            stateless:  true

    access_control:
        - { path: ^/api, roles: [ IS_AUTHENTICATED_FULLY ] }

Я пытаюсь аутентифицировать пользователей, а не клиента.

Большое спасибо.

4b9b3361

Ответ 1

В вашем config.yml должно быть следующее:

fos_user:
   db_driver: orm
   firewall_name: main
   user_class: Zoef\UserBundle\Entity\Userere

И что-то вроде этого для сервера oauth

fos_oauth_server:
    db_driver: orm
    client_class:        {PATH TO ENTITY}\Client
    access_token_class:  {PATH TO ENTITY}\AccessToken
    refresh_token_class: {PATH TO ENTITY}\RefreshToken
    auth_code_class:     {PATH TO ENTITY}\AuthCode
        service:
            user_provider: fos_user.user_provider.username

И security.yml должен выглядеть так:

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512
    providers:
        fos_userbundle:
            id: fos_user.user_provider.username
    firewalls:
        oauth_token:
            pattern:    ^/oauth/v2/token
            security:   false

    access_control:
    - { path: ^/, roles: ROLE_ADMIN }

Вы можете проверить, работает ли это, потому что, когда вы получили какой-либо URL-адрес, вы должны получить ответ вроде этого:

{ "error": "access_denied", "error_description": "Требуется проверка подлинности OAuth2" }