2010-05-22 3 views
16

Je me demande quelles sont les raisons pour OAuth 1.0 d'exiger un aller-retour au fournisseur de données pour échanger un jeton de demande autorisé pour un jeton d'accès.Pourquoi un jeton de requête OAuth 1.0 autorisé doit-il être échangé contre un jeton d'accès?

Ma compréhension du flux OAuth 1.0 est:

  1. site demandeur (consommateur) reçoit un jeton de demande à partir du site du fournisseur de données (fournisseur de services).

  2. Le site demandeur demande au site du fournisseur de données d'authentifier l'utilisateur, en passant un rappel. Une fois que l'utilisateur a été authentifié et autorisé sur le site demandeur, l'utilisateur est redirigé vers le site demandeur (consommateur) via le rappel fourni qui renvoie le jeton de demande maintenant autorisé et un code de vérification.

  3. Le site demandeur échange le jeton de demande pour un jeton d'accès.

  4. Le site demandeur utilise le jeton d'accès pour obtenir des données du site du fournisseur de données.

En supposant que je suis arrivé ce droit, pourquoi ne pouvait pas le rappel simplement fournir le jeton d'accès au site demandant directement à l'étape 3, l'élimination de l'étape 4? Pourquoi la demande d'échange du jeton de demande pour le jeton d'accès est-elle nécessaire? Existe-t-il uniquement pour les consommateurs qui demandent aux utilisateurs d'entrer le code de vérification manuellement, en pensant qu'il serait plus court et plus simple que le jeton d'accès lui-même?

Répondre

15

Joe,

Avec OAuth 1.0, il est important de garder à l'esprit que les pièces se produisent « serveur à serveur » et qui impliquent des pièces du navigateur (« l'agent utilisateur »). Le «point» d'OAuth, si vous préférez, est d'obtenir un jeton d'accès côté serveur et le secret au serveur principal du client, sans que le secret passe par le navigateur. Dans cet esprit: lorsqu'un utilisateur autorise un jeton de requête, le «callback» passe par l'intermédiaire de l'agent utilisateur, via la redirection HTTP. En d'autres termes, toute donnée (c'est-à-dire un code de vérificateur et le jeton de demande mais PAS le jeton de demande SECRET) dans le rappel est "vue" par le navigateur. C'est pourquoi un jeton d'accès (et secret) ne peut pas être des paramètres de l'étape de rappel: ceux-ci doivent être communiqués directement de serveur à serveur, pas via le navigateur.

+3

Cette réponse sur une autre question va dans certains détails sur le sujet: http://stackoverflow.com/questions/3584718/why-is-oauth-designed-to-have-request-token-and-access-token/ 3663351 # 3663351 –