Question

J'utilise l'API Facebook Graph (utilise OAuth 2.0 pour l'authentification) depuis un certain temps maintenant. J'ai maintenant besoin d'écrire ma propre API qui permet aux développeurs d'y connecter de manière similaire. J'ai regardé dans diverses bibliothèques, mais j'aimerais quelque chose d'un peu plus maigre, j'ai donc décidé de rouler le mien. En regardant le code, je dois authentifier un utilisateur sur Facebook, il semble relativement simple, mais veuillez me corriger si je sors.

Je devrais d'abord fournir une page sécurisée vers laquelle le consommateur devrait rediriger. par exemple https://api.mydomain.com/oauth/authorize?client_id=consumer_key&redirect_url=callback_url. L'utilisateur vérifierait l'application, puis je redirigerais vers l'URL fournie dans l'URL de rappel avec l'OAuth_token dans la chaîne de requête. Je suppose que je pourrais simplement générer une chaîne unique aléatoire ici pour le OAuth_token et la stocker contre l'utilisateur pour ce consommateur particulier (modifier: veuillez consulter la réponse ci-dessous, cela devrait être unique pour chaque application de consommation et non l'utilisateur).

C'est l'étape 1 de la voie. J'ai maintenant besoin de fournir une deuxième page sécurisée à laquelle le consommateur déclencherait une demande Web. par exemple https://api.mydomain.com/oauth/access_token?client_id=consumer_key&client_secret=consumer_secret&oauth_token=oauth_token_returnd_above. Cela permettrait au consommateur d'échanger l'OAuth_token retourné ci-dessus pour un jeton d'accès. Je générerais à nouveau simplement une chaîne unique aléatoire et la stockerais contre l'utilisateur pour ce consommateur particulier.

Maintenant, mon API accepterait l'accès_token pour les méthodes qui tentent de saisir des informations spécifiques à l'utilisateur qui l'utilise.

J'aimerais savoir si j'ai bien compris les choses. La spécification OAuth 2.0 semble extrêmement triviale si c'est le cas. Aussi pourquoi devons-nous échanger le oauth_token avec un Access_token? J'ai ma propre idée, mais j'apprécierais que quelqu'un puisse aider à clarifier cela.

J'apprécierais vraiment vos commentaires car je ne souhaite pas aller de l'avant et perdre des heures en mettant en œuvre quand c'est complètement faux.

Merci

Était-ce utile?

La solution

En fait, les diagrammes de flux de protocole seraient extrêmement utiles pour visualiser des spécifications comme celle d'Oauth 2, mais il n'y a que des travaux partiels. Comme je viens d'implémenter une bibliothèque OAuth 2 côté client, je peux vérifier que vous êtes sur la bonne voie. Mais voici une prise:

OAuth_Token appartient à votre application client (c'est-à-dire un lecteur Facebook de bureau) qui authentifie votre application (tout comme un identifiant). Vous soumettez ceci pour récupérer un Access_token, qui est spécifique à votre application et connecté à l'utilisateur, qui vous permet d'accéder aux ressources restreintes liées à l'utilisateur.

Voici un processus d'authentification de base de l'application de bureau (tiré de: http://developers.gigya.com/020_developer_guide/85_rest/oauth2)

REST OAuth 2.0

En fait, un digram à flux avec chronologie (de haut en bas, tiré de: http://www.ibm.com/developerworks/web/library/wa-oauthsupport/?ca=drs-)

Protocol flow

Et enfin la procédure complète est: (tiré de http://h2anetwork.org/projectdocs/dpi/dpi_framework.html)

OAuth protocol flow

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top