我正在開發一個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防火牆?