FOSOAuthServerBundle和FOSUserBundle:共享身份验证

时间:2018-07-12 12:23:04

标签: symfony oauth fosuserbundle fosoauthserverbundle

情况:

FOSUserBundle已设置并且在尝试通过/login等登录时可以正常工作。我还看到自己已通过身份验证,所以这里一切都很好。

还设置了FOSOAuthServerBundle,通过/oauth/v2/token获取令牌以及使用身份验证标头访问/api/demo路由都是有效的。

我想要的:

能够使用身份验证标头访问/api/demo(例如,从移动应用访问API),以及访问使用form_login进行身份验证的路由(防火墙main)。

问题:

问题是,这对我不起作用,并且我在互联网上找不到解决方案。在使用防火墙/api/demo进行身份验证的浏览器中访问路由main会使我的访问被拒绝。

重新排序防火墙对我也不起作用。

config/security.yml

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username

    firewalls:
        oauth_token:
            pattern: ^/oauth/v2/token
            security: false
        api:
            pattern: ^/api
            fos_oauth: true
            stateless: true
            anonymous: false

        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_token_generator: security.csrf.token_manager

            logout:       true
            anonymous:    true

    access_control:
        - { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/api/, role: ROLE_USER }

使用:

symfony/symfony                       v3.4.0
friendsofsymfony/oauth-server-bundle  1.6.1
friendsofsymfony/user-bundle          v2.1.2

0 个答案:

没有答案