2013-01-14 18 views
6

में/api विधियों तक पहुंचने के लिए मैं FOSOauthServerBundle, FOSRestBundle और FOSUserBundle पर आधारित oauth2 सर्वर बनाने की कोशिश कर रहा हूं। मैं अपने oauth-server परीक्षण करने के लिए एक डेमो आवेदन बनाया है और वह के माध्यम से डेटा प्राप्त करने में विफल रहा है प्राप्त reguestoauth2 सर्वर

(प्राप्त 401 त्रुटि 'त्रुटि = "access_denied", error_description = "OAuth2 प्रमाणीकरण आवश्यक"'),

इस तथ्य के बावजूद कि उपयोगकर्ता को प्रमाणीकृत किया गया था और क्लाइंट को एक टोकन का उपयोग ठीक से प्राप्त हुआ था।

मुझे एपीआई नियंत्रकों को कैसे कार्यान्वित करना चाहिए ताकि oauth2 प्रमाणीकरण प्रक्रिया निष्पादित कर सके?

इसके अलावा, मैं उन बंडलों के आधार पर वास्तविक काम करने वाले ओथ सर्वर उदाहरण पर एक नज़र डालना चाहता हूं ताकि मैं इस पर अपना आवेदन देख सकूं।

मेरी 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 क्या आप हमारे साथ अनुरोध में पहुंच टोकन पास करने वाले कोड को साझा कर सकते हैं? यह कोड जावास्क्रिप्ट है? –

उत्तर

1

उत्तर सबमिट करने से यह खुला प्रश्न बंद कर देगा।

एक्सेस अस्वीकार कर दिया गया क्योंकि अनुरोध में पहुंच टोकन नहीं था। एक क्लाइंट और उपयोग बनाने के शीर्षक वाले अनुभाग के साथ प्रलेखन का संदर्भ लें।

https://github.com/FriendsOfSymfony/FOSOAuthServerBundle/blob/master/Resources/doc/index.md