我正在开发一个Symfony 2.7项目,该项目同时具有Web登录界面和API的oAuth验证。 我使用FOSUserBundle进行验证提供程序,并使用FOSOAuthServerBundle提供oAuth功能。FOS捆绑+ FOSOAuthServerBundle防火墙配置
我下面的链接到这个职位的OAuth实施与FOSOauthServerBundle FOSOAuthServerBundle with FOSUserBundle - How to make it works?
我认为是几乎没有指导,但安全问题是阻止我。 我在下面的方式设置防火墙对我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 ] }
的问题是,API和OAuth的防火墙是主要的^/ 下,所以它让我想起到登录页面时,我尝试访问本地主机:8000/API /没有登录过,而不是文章给我的OAuth autentication错误:
{ “错误”: “ACCESS_DENIED”, “ERROR_DESCRIPTION”: “需要的OAuth2认证”}
例如,。
或者一旦我得到了访问令牌,当我尝试访问的资源,如:
http://localhost:8000/app.php/api/article/?access_token=THISISMYACCESSTOKEN
我得到的fos_login而不是资源。
如果我修改主要防火墙^ /安全/ everithing工作正常,但我得到问题的网络认证。
我的应用程序的所有控制器都处于/ secured/path中,因此更改主防火墙不是问题,如果我让防火墙不受保护形成FOSUserBundle的^/pattern几个错误。我应该为login/login_check/logout操作创建一个特定的防火墙,把主防火墙从/ secured /或者是否有另一种方法来排除主防火墙的oauth防火墙?