में/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 ] }
धन्यवाद।
इसे हल किया गया। समस्या यह थी कि मैंने अपने अनुरोधों में पैरामीटर के रूप में एक्सेस टोकन नहीं भेजा था, लेकिन इसे हेडर पर सेट किया था। – user1976651
हो सकता है कि आप अन्य मुद्दों को प्रयोग करने में अन्य लोगों की सहायता के लिए अपने स्वयं के प्रश्न का उत्तर दे सकें। –
@ user1976651 क्या आप हमारे साथ अनुरोध में पहुंच टोकन पास करने वाले कोड को साझा कर सकते हैं? यह कोड जावास्क्रिप्ट है? –