OAuth 2.0 y OpenID Connect: qué son y cómo funcionan

Describimos OAuth 2.0 y OpenID Connect: qué son y cómo funcionan, considerando que este tema puede resultar difícil para desarrolladores con poca experiencia.

OAuth 2.0: definición

OAuth es un protocolo de autorización que es diferente al protocolo de autenticación, tiene el objetivo de otorgar acceso a los recursos, no autenticar a los usuarios.

Al otorgar acceso, se puede citar el siguiente ejemplo: un usuario quiere ofrecer a alguna aplicación web su lista de contactos de Gmail o la posibilidad de que la aplicación publique en su muro de Facebook.

Antes de OAuth, este proceso se realizaba dando un nombre de usuario y contraseña a la aplicación web, creyendo que no habría ninguna acción no regulada utilizando nuestras credenciales.

Con OAuth 2.0, no se puede enviar el nombre de usuario y contraseña a nadie.

OAuth 2.0: cómo funciona

OAuth 2.0 sigue un flujo simple con agentes clave involucrados como son los siguientes:

Agentes

Propietario del recurso: que es el usuario que tiene la posibilidad de otorgar acceso a algunos de sus recursos a otras aplicaciones web y no sólo apps web.

Cliente

En este caso será la aplicación web que quiere nuestro recurso.

Servidor de recursos

Este es el servidor responsable de mantener los datos del usuario y propietario del recurso.

Servidor de autorización

El servidor de autorización puede parte del ecosistema del servidor de recursos. Con los servidores de recursos, estos pertenecen a una organización común. Pero el único propósito de que pueda otorgar o rechazar el acceso a algunos de los recursos del propietario.

Concesión de autorización

La concesión de autorización es un código generado por el servidor de autorización cuando el propietario de un recurso da su consentimiento.

URI de redireccionamiento

El URI de redireccionamiento suele ser una URL ubicada en el cliente. Una vez que el propietario del recurso da su consentimiento, el servidor de autorización genera un código de concesión de autorización y lo envía al cliente mediante el URI de redireccionamiento.

Token de acceso: el token de acceso es un token generado por el servidor de autorización cuando el cliente lo solicita con un código de concesión de autorización válido, con este accesorio, el cliente puede acceder a recursos específicos en el servidor de recursos.

Flujo de OAuth 2.0

Como ejemplo se puede dar la siguiente situación: un usuario, se encontró con un nuevo sitio web de redes sociales: BeerAndDevelopers.drink. Fascinado por sus funcionalidades, quiere compartirlo con sus compañeros y amigos en Facebook.

Paso 1

El propietario del recurso da clic en el botón “Compartir con amigos en Facebook” en el sitio web BeerAndDevelopers.

Paso 2

El cliente redirige al servidor de autorización (autorización.facebook.com) y solicita una concesión de autorización.

Paso 3

El servidor de autorización que utiliza el servidor de recursos (wall.facebook.com) le pregunta si da su consentimiento. Si lo hace, el flujo continúa.

Paso 4

Después de haber otorgado el permiso, el servidor de autorización genera un código de concesión de autorización y redirige el URI de redireccionamiento del cliente.

Paso 5

Ahora el cliente tiene un código de autorización. El siguiente paso es solicitar al servidor de autorización un token de acceso a cambio del código de autorización. Si el código de autorización es válido, el servidor de autorización envía al cliente un token de acceso.

Paso 6

Utilizando el token de acceso, el cliente tiene acceso al servidor de recursos. Se puede preguntar por qué necesitamos obtener el código de autorización primero y solicitar un token de acceso más tarde y la respuesta es por razones de seguridad.

Es por eso que cuando obtenemos el código de concesión de autorización, lo validamos con la sesión de usuario actual, y después de eso, solicitamos un token de acceso del servidor de autorización.

Algunos flujos utilizan solo comunicación de back-end o comunicación de front-end, pero no los discutimos aquí.

Para simplificar el ejemplo, hay que mencionar que como usuarios, se puede permitir recursos o acciones específicas. Cosas como “leer contactos”, “publicar en el muro”, “eliminar contacto”, etc. El token de acceso generado solo puede acceder a los recursos a los que se le ha permitido.

¿Qué es OpenID Connect?

Por su naturaleza, OAuth 2.0 no admite una forma de manejar los datos del usuario, por lo que cualquier creatividad de los desarrolladores fue bienvenida. Debido a esto, no había estándares y cada implementación era diferente.

OpenID Connect es una actualización de OAuth 2.0 con una capa sobre OAuth 2.0. Su única responsabilidad es manejar los datos del perfil del usuario.

También presenta algunos puntos finales adicionales para solicitar datos de perfil de usuario y el token de identificación.

Con OpenID Connect se puede solicitar un token de acceso y un token de identificación en el mismo flujo.

Leíste: OAuth 2.0 y OpenID Connect: qué son y cómo funcionan, te recomendamos: Trucos de CSS para desarrolladores web

Te invitamos a que nos sigas en nuestras redes sociales: Facebook, Twitter, Instagram y Youtube con el perfil: @tortugacode