2012-12-07 5 views
11

Sto tentando di impostare FOSUserBundle come provider di autenticazione per il server FOSOAuthServerBundle abilitato. FOSOAuthServerBundle ha funzionato correttamente prima di provare a implementare FOSUserBundle e ho anche fatto funzionare FOSUserBundle senza FOSOAuthServerBundle, ma non riesco a farli funzionare insieme.Come configurare FOSUserBundle come provider di autenticazione per il server FOSOAuthServerBundle abilitato

La mia domanda è cosa deve essere specificato per il provider di autenticazione in oauth_authorize: firewall nel file security.yml qui sotto?

# app/config/security.yml 
security: 
    providers: 
    fos_userbundle: 
     id: fos_user.user_provider.username 

    encoders: 
     FOS\UserBundle\Model\UserInterface: sha512 

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

     oauth_authorize: 
      pattern: ^/oauth/v2/auth 

      # WHAT GOES HERE? 

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

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

Sto tentando di autenticare gli utenti e non il client. Grazie molto.

risposta

0

si dovrebbe avere il seguente nella vostra config.yml

fos_user: 
    db_driver: orm 
    firewall_name: main 
    user_class: Zoef\UserBundle\Entity\Userere 

E qualcosa di simile per il server OAuth

fos_oauth_server: 
    db_driver: orm 
    client_class:  {PATH TO ENTITY}\Client 
    access_token_class: {PATH TO ENTITY}\AccessToken 
    refresh_token_class: {PATH TO ENTITY}\RefreshToken 
    auth_code_class:  {PATH TO ENTITY}\AuthCode 
     service: 
      user_provider: fos_user.user_provider.username 

E il security.yml dovrebbe presentarsi così:

security: 
    encoders: 
     FOS\UserBundle\Model\UserInterface: sha512 
    providers: 
     fos_userbundle: 
      id: fos_user.user_provider.username 
    firewalls: 
     oauth_token: 
      pattern: ^/oauth/v2/token 
      security: false 

    access_control: 
    - { path: ^/, roles: ROLE_ADMIN } 

È possibile testare se funziona perché quando si arriva a qualsiasi URL si dovrebbe ottenere una risposta come questa:

{"error": "access_denied", "error_description": "Autenticazione OAuth2 richiesta"}