2013-01-14 7 views
6

Ich versuche, einen OAUTH2-Server basierend auf FOSOauthServerBundle, FOSRestBundle und FOSUserBundle erstellen. Ich habe eine Demo-Anwendung, die meine oauth-server zu testen und es versäumt die die Daten über Empfang GET reguestZugriff auf/API-Methoden in OAUTH2 Server

(erhielt 401 Fehler 'error = "access_denied", ERROR_DESCRIPTION = "OAuth2 Authentifizierung erforderlich"'),

trotz der Tatsache, dass der Benutzer authentifiziert wurde und der Client ein Zugriffs-Token ordnungsgemäß erhalten.

Wie soll ich die API-Controller implementieren, damit der oauth2 den Authentifizierungsprozess ausführt?

Auch würde ich gerne einen Blick auf echte Arbeit oauth Server Beispiel basierend auf diesen Bundles werfen, so dass ich in der Lage wäre, meine Anwendung darauf zu überprüfen.

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

Dank.

+0

löste es. Das Problem war, dass ich das Zugriffstoken nicht als Parameter in meinen Anforderungen gesendet habe, sondern es in der Kopfzeile gesetzt habe. – user1976651

+8

Vielleicht könnten Sie Ihre eigene Frage beantworten, um anderen Leuten zu helfen, die gleichen Probleme zu erproben. –

+0

@ user1976651 können Sie mit uns den Code teilen, der das Zugriffs-Token an die Anfrage weitergibt? Dieser Code ist Javascript? –

Antwort