2012-12-07 6 views
11

Próbuję skonfigurować FOSUserBundle jako dostawcę uwierzytelniania dla mojego serwera obsługującego FOSOAuthServerBundle. FOSOAuthServerBundle działa poprawnie przed próbą zaimplementowania FOSUserBundle i miałem również FOSUserBundle działający bez FOSOAuthServerBundle, ale po prostu nie mogę ich połączyć.Jak skonfigurować FOSUserBundle jako dostawcę uwierzytelniania dla mojego serwera obsługującego FOSOAuthServerBundle

Moje pytanie brzmi: co należy określić dla dostawcy uwierzytelniania w pliku oauth_authorize: zapora w pliku security.yml poniżej?

# 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 ] } 

Próbuję uwierzytelnić użytkowników, a nie klienta. Wielkie dzięki.

Odpowiedz

0

Powinieneś mieć następujące w config.yml

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

I coś takiego dla serwera 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 

a security.yml powinna wyglądać następująco:

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 } 

Możesz sprawdzić, czy to działa, ponieważ po dotarciu do dowolnego adresu URL powinieneś uzyskać odpowiedź w następujący sposób:

{ "błąd": "Odmowa dostępu", "ERROR_DESCRIPTION": "wymaga uwierzytelnienia OAuth2"}

Powiązane problemy