Security FOSbundle&x2B;FOSOAuthServerBundle防火墙配置

Security FOSbundle&x2B;FOSOAuthServerBundle防火墙配置,security,symfony,oauth,fosuserbundle,fosoauthserverbundle,Security,Symfony,Oauth,Fosuserbundle,Fosoauthserverbundle,我正在从事一个Symfony 2.7项目,该项目具有Web登录界面和OAuth autentication for API。 我使用FOSUserBundle作为自动验证提供程序,并使用FosAuthServerBundle提供OAuth功能 我遵循与本文链接的指南,使用FOSOauthServerBundle实现OAuth 我想快到了,但是安全问题阻碍了我。 我已经在securtiy.yml上按以下方式设置了防火墙 firewalls: main: pattern:

我正在从事一个Symfony 2.7项目,该项目具有Web登录界面和OAuth autentication for API。 我使用FOSUserBundle作为自动验证提供程序,并使用FosAuthServerBundle提供OAuth功能

我遵循与本文链接的指南,使用FOSOauthServerBundle实现OAuth

我想快到了,但是安全问题阻碍了我。 我已经在securtiy.yml上按以下方式设置了防火墙

firewalls:
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_provider: security.csrf.token_manager # Use form.csrf_provider instead for Symfony <2.4
            login_path:          fos_user_security_login
            check_path:          fos_user_security_check
            #default_target_path: app_website_index
        logout:       true
        anonymous:    true
        logout:
              path: fos_user_security_logout
              #target: index
              target: fos_user_security_login

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

    oauth_authorize:
        pattern:    ^/oauth/v2/auth
        # Add your favorite authentication process here
        form_login:
             provider: fos_userbundle
             csrf_provider: security.csrf.token_manager # Use form.csrf_provider instead for Symfony <2.4
             login_path:          fos_user_security_login
             check_path:          fos_user_security_check
             #default_target_path: app_website_index

    api:
        pattern:    ^/api
        fos_oauth:  true
        stateless:  true
        anonymous:  false # can be omitted as its default value

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, role: ROLE_ADMIN }
    - { path: ^/api, roles: [ IS_AUTHENTICATED_FULLY ] }
比如说

或者,一旦我获得了访问令牌,当我尝试访问以下资源时:

http://localhost:8000/app.php/api/article/?access_token=THISISMYACCESSTOKEN
我得到的是fos_登录,而不是资源

如果我将主防火墙修改为^/secured/一切正常,但我会在web自动验证中遇到问题


我的应用程序的所有控制器都在/secured/path下,因此更改主防火墙这不是一个问题,如果我让未受保护的防火墙形成^/模式,则几个错误形成FOSUserBundle。我应该为登录/登录检查/注销操作创建一个特定的防火墙吗?将主防火墙置于/安全的/或是否有其他方法将OAuth和API防火墙排除在主防火墙之外?

这是一个很老的问题,但我想这是由于这一行:

- { path: ^/api, roles: [ IS_AUTHENTICATED_FULLY ] }
无论您使用“…”调用什么,您都将被重定向到登录页面

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