10. Diagrama de flujo del proceso de autenticación OAuth

Estoy echando un vistazo a dos recursos que explican desde diferentes ángulos el diagrama de flujo del proceso de autenticación OAuth. He tomado algunas notas y he hecho un pequeño resumen de lo que creo haber entendido. El primer enlace es La guía de iniciación a OAuth, de Hueniverse; el segundo, La guía del desarrollador de Google.

¿Qué tal si hacemos clic en los dos y los vemos al mismo tiempo? 😉 A mí me ha ido muy bien leer lo que dice uno y compararlo en el otro. Hueniverse explica, a través de los programas de ejemplo faji y beppa, cómo ve el usuario el proceso OAuth (personalmente me ha gustado mucho y lo encuentro muy práctico y sencillo). Por otra parte, el enlace de La guía del desarrollador de Google es bastante más técnico y presenta, en 14 pasos, el diagrama de flujo del proceso OAuth. En un contexto CakePHP y YouTube, mi resumen sería este:

El programa CakePHP pide a Google un token de autorización; éste nos lo envía, pero antes comprueba que estamos registrados; nuestra aplicación web redirecciona al usuario a la página de YouTube y el usuario se autentica; el token de autorización se convierte entonces en un token de acceso y YouTube redirecciona al usuario a nuestra página CakePHP; CakePHP se conecta a YouTube para intercambiar el token de autorización por el de acceso y YouTube se lo devuelve; finalmente, cuando se asocia el token de acceso a la cuenta de YouTube del usuario, el programa ya puede enviar peticiones API autenticadas en nombre del usuario. ¡Puf! ¡Parece la jugada de un partido de fútbol!

Anuncios

9. Entendiendo OAuth. Definiciones básicas.

La Guía de OAuth para principiantes, escrita por Eran Hammer-Lahav y publicada por Hueniverse, cubre muchos de los temas que se necesitan para entender e implementar este protocolo. En la primera parte, visión general, define algunos conceptos básicos necesarios para entender OAuth. Esta obra tiene una licencia Creative Commons 3.0 de reconocimiento, no comercial y sin obras derivadas.

Estas son algunas definiciones de los conceptos básicos que maneja OAuth según la Guía de OAuth para principiantes. Estos conceptos son los mismos que trata la especificación técnica del protocolo OAuth 1.0, publicada el 4 de diciembre de 2007.

Proveedor del servicio. El proveedor del servicio controla todos los aspectos de la implementación OAuth. Este término se utiliza para describir el sitio o servicio web donde se encuentran los recursos restringidos. Puede tratarse de un sitio para compartir fotos donde los usuarios guardan sus álbumes, un servicio de banca en línea, un sitio de microblogging, o cualquier otro servicio que almacene material privado del usuario.

Usuario. Es la razón de ser de OAuth. Si no hay usuarios, no hay necesidad de OAuth. Los usuarios tienen material privado en el proveedor del servicio pero quieren compartirlo con otro sitio. En OAuth, el protocolo se detiene, sin intervención manual con el usuario, al menos una vez, para recibir el permiso que otorga el acceso.

Consumidor. Un nombre curioso para una aplicación que intenta acceder a los recursos del usuario. Puede ser un sitio web, un programa de escritorio, un dispositivo móvil o cualquier cosa conectada a Internet. El consumidor es el que pide permiso para acceder a los recursos y es aquí donde se lleva a cabo la parte más útil de OAuth. OAuth define un desarrolador de consumidor como la entidad que escribe código que interactúa con el proveedor del servicio.

Recursos protegidos. Es el material que protege OAuth y al que permite el acceso. Pueden ser datos (fotos, documentos, contactos), actividades (el post de un blog, fondos de transferencia) o cualquier URL que necesite restringir el acceso.

Tokens. Para acceder a los recursos se utilizan tokens en vez de credenciales de usuario. Generalmente, un token es una cadena aleatoria, única, de letras y números, difícil de adivinar, que forma pareja con un secreto que protege al token de los malos usos. OAuth define dos tipos diferentes de tokens: tokens de petición y tokens de acceso.