2010-05-22 29 views
16

Me pregunto cuáles son las razones para que OAuth 1.0 requiera un viaje de ida y vuelta al proveedor de datos para intercambiar un token de solicitud autorizado por un token de acceso.¿Por qué se debe cambiar un token de solicitud autorizado de OAuth 1.0 por un token de acceso?

Mi comprensión de la OAuth 1.0 flujo de trabajo es:

  1. Solicitando sitio (consumidor) consigue un token de solicitud desde el sitio proveedor de datos (proveedor de servicios).

  2. El sitio solicitante solicita al sitio del proveedor de datos que autentique al usuario, pasando una devolución de llamada.

  3. Una vez que el usuario ha sido autenticado y autorizado el sitio solicitante, el usuario vuelve al sitio solicitante (consumidor) a través de la devolución de llamada que devuelve el token de solicitud ahora autorizado y un código de verificación.

  4. El sitio solicitante intercambia el token de solicitud por un token de acceso.

  5. El sitio solicitante utiliza el token de acceso para obtener datos del sitio del proveedor de datos.

Suponiendo que tengo ese derecho, ¿por qué no podría proporcionar la devolución de llamada simplemente el token de acceso al sitio que solicita directamente en el paso 3, eliminando el paso 4? ¿Por qué es necesaria la solicitud para intercambiar el token de solicitud del token de acceso? ¿Existe únicamente para los consumidores que requieren que los usuarios ingresen el código de verificación de forma manual, con la idea de que sería más corto y más simple que el token de acceso en sí mismo?

Respuesta

15

Joe,

Con OAuth 1.0, es importante tener en cuenta que las piezas están sucediendo "servidor a servidor" y qué piezas implican el navegador ("agente de usuario"). El "punto" de OAuth, si lo desea, es obtener un token de acceso del lado del servidor y el secreto en el servidor del consumidor, sin tener el pase secreto a través del navegador.

Teniendo esto en cuenta: cuando un usuario autoriza un token de solicitud, la "devolución de llamada" ocurre a través del agente de usuario, a través de la redirección HTTP. En otras palabras, cualquier dato (es decir, un código de verificador y el token de solicitud pero NO el token de solicitud SECRETO) en la devolución de llamada es "visto" por el navegador. Esta es la razón por la que un token de acceso (y secreto) no puede ser parámetros del paso de devolución de llamada: estos deben comunicarse directamente de servidor a servidor, no a través del navegador.

+3

Esta respuesta a otra pregunta entra en detalles al respecto: http://stackoverflow.com/questions/3584718/why-is-oauth-designed-to-have-request-token-and-access-token/ 3663351 # 3663351 –

Cuestiones relacionadas