J'utilise FOSOAuthServerBundle comme point de terminaison oauth. Je généré avec succès un jeton en utilisant la méthode d'attribution Resource Owner Password Credentials
:Symfony FOSOAuthServerBundle: jeton d'accès non détecté
{
"access_token": "MY-FOO-TOKEN",
"expires_in": 3600,
"token_type": "bearer",
"scope": "read",
"refresh_token": "MY-BAR-REFRESH-TOKEN"
}
Maintenant, je voudrais l'utiliser pour obtenir des ressources protégées. Donc j'ai fait:
curl -X GET -H "Authorization: Bearer MY-FOO-TOKEN" "http://localhost:8000/api/a-bar-resource"
Le porteur ne semble pas être détecté.
INFOS:
echo $this->get('security.token_storage')->getToken();
donne: AnonymousToken(user="anon.", authenticated=true, roles="")
Dans les en-têtes il y a:
["authorization"]=> /** <-- Is the lowercase OK? **/
array(1) {
[0]=>
string(93) "Bearer MY-FOO-TOKEN"
}
J'ai essayé aussi de passer access_token
comme paramètre de requête, sans succès.
Maintenant, je suppose que quelque chose ne va pas avec le config.yml
ou le security.yml
. Voici quelques éléments sélectionnés
config.yml:
fos_oauth_server:
[...]
service:
options:
supported_scopes: read
user_provider: fos_user.user_provider.username_email
security.yml:
security:
[...]
firewalls:
api:
pattern: ^/api
fos_oauth: true
stateless: true
anonymous: false
access_control:
- { path: ^/api, roles: [ IS_AUTHENTICATED_ANONYMOUSLY ] }
Conseil obtenu: "Je pense que vous devez le déboguer à partir de la classe source du fournisseur 'oAuthProvider' dans' Security \ Authentication \ Provider' – Nicorr