Comment mettre en œuvre FosOAuthServerBundle pour sécuriser une API REST?

Je tiens à fournir une API RESTful sécurisé avec OAuth2 à l'aide de FOSOAuthServerBundle et je ne suis pas vraiment sûr de ce que j'ai à faire.

J'ai suivi les étapes de base à partir de la documentation mais certaines choses sont manquant et je ne peux pas trouver un exemple complet de ce dont j'ai besoin.

Donc, j'ai essayé de comprendre du mieux que je pouvais cet exemple de mise en œuvre (le seul que j'ai trouvé), mais il ya encore des choses que je ne comprends pas.

Tout d'abord, pourquoi avons-nous besoin d'une page de connexion à un API? Supposons que mon client est un iPhone ou Application Android, je vois l'intérêt de la page de connexion à l'application, mais je pense que le client a juste à appeler un service web à partir de l'API pour obtenir son jeton, je me trompe? Alors, comment mettre en œuvre une autorisation et un jeton de fournir via le point de terminaison REST?

Puis, la documentation dit d'écrire ce pare-feu :

oauth_authorize:
    pattern:    ^/oauth/v2/auth
    # Add your favorite authentication process here

Et je ne sais pas comment ajouter un processus d'authentification. Dois-je écrire ma propre personne, par exemple suite à ce tutoriel ou suis-je complètement tort?

À l'échelle mondiale, quelqu'un peut prendre le temps d'expliquer le processus nécessaire, après les cinq étapes dans les docs, pour fournir une OAuth2 sécurisé API RESTful? Il serait très agréable...


MODIFIER après @Sehael réponse :

J'ai encore quelques questions avant c'est parfait...

Ce qui est représenté par le "Client" ici? Pour exemaple, dois-je créer un client pour une application iPhone, et un autre pour une application Android? et dois-je créer un nouveau client pour chaque instance de vouloir utiliser l'API? quelle est la meilleure pratique dans ce cas?

Contrairement à vous, je n'utilise pas le processus d'authentification OAuth pour le front, site web, mais le "classique" de symfony façon. Il semble étrange pour vous, ou est-ce normal?

Quelle est l'utilité de la refresh_token? Comment l'utiliser?

J'ai essayé de tester mon nouveau OAuth services protégés. J'ai utilisé le Facteur extension chrome, qui prennent en charge le protocole OAuth 1.0, ne OAuth2 ressembler OAuth1 assez pour être testé avec Facteur? Il y a un "jeton secret" champ que je ne sais pas comment le remplir. Si je ne peux pas, je serais heureux de voir votre (@Sehael) classe PHP, comme vous l'avez proposé. /Edit : OK je crois que j'ai trouvé la réponse pour celui-ci. J'ai juste ajouté access_token comme paramètre GET avec le jeton de la valeur. Il semble être au travail. Il est regrettable que je ne reverse engenering sur bundle code pour trouver que, au lieu de le lire dans la documentation.

De toute façon, merci beaucoup !

InformationsquelleAutor maphe | 2014-01-21