Próbuję utworzyć serwer oauth2 na podstawie FOSOauthServerBundle
, FOSRestBundle
i FOSUserBundle
. I stworzył aplikację demo do przetestowania moich oauth-server
a on nie odbiera dane za pośrednictwem GET reguestdostęp do metod/api na serwerze oauth2
(otrzymała 401 błędzie 'Błąd = "Odmowa dostępu", ERROR_DESCRIPTION = "OAuth2 uwierzytelnianie wymagane"'),
pomimo faktu, że użytkownik został uwierzytelniony, a klient otrzymał token dostępu poprawnie.
W jaki sposób należy zaimplementować kontrolery api, aby oauth2 wykonywał proces uwierzytelniania?
Chciałbym również rzucić okiem na prawdziwy działający przykład serwera Oauth bazujący na tych pakietach, dzięki czemu mógłbym sprawdzić moją aplikację.
mój 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 ] }
Dzięki.
rozwiązał to. Problem polegał na tym, że nie wysłałem tokena dostępu jako parametru w moich żądaniach, ale ustawiłem go w nagłówku. – user1976651
może mógłbyś odpowiedzieć na własne pytanie, aby pomóc innym eksperymentować z tymi samymi problemami. –
@ user1976651 czy możesz udostępnić nam kod podający token dostępu w żądaniu? Ten kod jest javascript? –