2013-01-14 34 views
6

我試圖創建基於FOSOauthServerBundleFOSRestBundleFOSUserBundle的oauth2服務器。我創建演示應用程序來測試我oauth-server和它未能通過接收數據的GET reguest訪問oauth2服務器中的/ api方法

(接收401錯誤「的錯誤=‘ACCESS_DENIED’,ERROR_DESCRIPTION =‘的OAuth2 需要認證’」),

儘管用戶已通過身份驗證並且客戶端已正確收到訪問令牌。

我該如何實現api控制器,以便oauth2執行認證過程?

此外,我想看看基於這些捆綁的真正的工作oauth服務器示例,所以我將能夠檢查我的應用程序。

我security.yml:

jms_security_extra: 
    secure_all_services: false 
    expressions: true 

security: 
acl: 
    connection: default 

role_hierarchy: 
    ROLE_ADMIN:  ROLE_USER 
    ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH] 

providers: 
    in_memory: 
     memory: 
      users: 
       user: { password: userpass, roles: [ 'ROLE_USER' ] } 
       admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] } 
    fos_userbundle: 
     id: fos_user.user_provider.username 

encoders: 
     FOS\UserBundle\Model\UserInterface: sha512 
     Symfony\Component\Security\Core\User\User: plaintext 

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

    oauth_authorize: 
     pattern: ^/oauth/v2/auth 
     form_login: 
      provider: fos_userbundle 
      check_path: /oauth/v2/auth_login_check 
      login_path: /oauth/v2/auth_login 
      use_referer: true 
     anonymous: true 

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

    secured_area: 
     pattern: ^/ 
     anonymous: ~ 
     form_login: 
      provider: fos_userbundle 
      check_path: /login_check 
      login_path: /login 
      always_use_default_target_path: true 
      default_target_path:/

access_control: 
    - { path: ^/oauth/v2/auth_login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/oauth/v2/auth, role: ROLE_USER } 
    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY} 
    - { path: ^/, roles: ROLE_USER } 
    - { path: ^/api, roles: [ IS_AUTHENTICATED_FULLY ] } 

感謝。

+0

解決了它。問題在於我沒有將訪問令牌作爲參數發送給我的請求,而是將其設置在標題處。 – user1976651

+8

也許你可以回答你自己的問題,以幫助其他人嘗試相同的問題。 –

+0

@ user1976651您可以與我們分享在請求中傳遞訪問令牌的代碼嗎?此代碼是JavaScript? –

回答