OpenID Connect, autenticación para webs y aplicaciones móviles

Columna de Luis del Ser, confundador de Movilok

OpenID Connnect permite autenticar a usuarios en sitios web a través del navegador (páginas web y webapps) y a través de aplicaciones móviles nativas sin que sea necesario responsabilizarse de la gestión y almacenamiento de contraseñas. 

La especificación de OpenID Connect se lanzó en 2014 y su éxito deriva de lo que le hace diferente de otras alternativas existentes: OpenID Connect es lo que se denomina  ‘API-friendly’, es decir, convive bien en un entorno tecnológico centrado en APIs como el actual, y por lo tanto se puede utilizar en todo tipo de aplicaciones incluso móviles web o nativas.

OpenID Connect extiende OAuth 2.0 dotándolo de una capa de autenticación de usuario. Para su funcionamiento utiliza un HTTP y el formato JSON Web Tokens (JWT) para identificar a los usuarios. 

Por qué despierta tanto interés

Uno de los principales retos de las empresas es cómo poder aprovechar de la mejor manera posible toda la información y datos de los que dispone y que son relevantes para la evolución de su negocio. 

Hace algunos años el procedimiento habitual consistía en empaquetar datos y funciones en sistemas y aplicaciones especializadas en facilitar tareas concretas.  Estas aplicaciones especializadas actúan a modo de ‘silos de información’ que son independientes unos de otros pero que optimizan el uso de sus datos. El principal problema de empaquetar la información en sistemas de esta forma es que se dificulta el uso de esa misma información por parte de otros sistemas y procesos relevantes para el negocio.  

Frente a la estrategia anterior de aislar los datos, ahora las empresas con más crecimiento y que desarrollan más rápidamente nuevos productos y servicios, son aquellas que se han centrado en conectar datos.  En ellas las tareas y procesos de negocio se optimizan utilizando APIs que conectan los datos de la empresa de forma interna, entre áreas y sistemas, pero también de forma externa, con clientes, proveedores y con otras empresas.  

Las aplicaciones y sistemas ‘API-ficados’ siguen necesitando identificar a los usuarios que las utilizan, aunque ahora el escenario es bastante más complejo. Por un lado, las aplicaciones dejan de estar enmarcadas en categorías rígidas, como pudiera ser de consumo, empresariales, sociales, móviles.  Además, como usuarios también esperamos que los servicios sean accesibles y tengan continuidad a través de Internet y en situaciones diferentes, con independencia incluso del dispositivo y la aplicación con la que accedemos a ellos, y de que sea web, móvil o nativo.

OpenID Connect está diseñado para encajar perfectamente en este tipo de entornos.

¿Un protocolo de Autenticación basado en una plataforma de Autorización?

Para explicarlo más fácilmente es útil aclarar primero algunos términos. 

El término ‘identidad’ hace referencia a un conjunto de atributos que permiten identificar a algo o alguien dentro de un contexto.   Ese ‘algo o alguien’ puede ser un objeto, una persona, un sistema,.. y se denomina de forma genérica ‘entidad’ y los atributos que componen la identidad no tienen porqué ser siempre los mismos, sino que están ligados al contexto.   Por ejemplo, puedo identificar a un amigo (entidad) que llama por teléfono (contexto) por las características de su voz (atributos). También soy capaz de identificar al mismo amigo (misma entidad) en una foto (contexto); la identificación se basa en otros atributos diferentes: altura, color de pelo, rasgos de la cara, etc. Esto significa también que una misma entidad puede tener varias identidades, en función del contexto.

Partiendo de esta definición, ‘identificar’ es el proceso de obtener una identidad en un determinado contexto, es decir, recopilar los atributos que son significativos en ese contexto. El acto de confirmar que la identidad (los atributos) corresponden realmente a la entidad es lo que se denomina ‘autenticar’.

El término ‘autorizar’ es el acto de verificar qué conjunto de acciones puede realizar una determinada entidad.  Uno de los protocolos de autorización más utilizados actualmente es OAuth 2.0. En este protocolo para definir el mecanismo que garantiza el acceso al recurso, se utiliza una estructura de información específica que se denomina ‘token de acceso’. Una tercera parte (por ejemplo, una aplicación) puede presentar un token de acceso para acceder a un recurso. 

Por establecer un símil, es parecido al hecho de presentar una entrada para acceder a un cine. La presentación de la entrada valida la entrada y autoriza el acceso, pero no identifica quién es la persona que la lleva.  Es decir, una autorización no implica una verificación de identidad.

Aunque autenticación y autorización no son intercambiables, están relacionadas y es frecuente encontrar procesos de autorización en los que aparece en algún punto una autenticación: Por ejemplo la tarjeta que abre una habitación de hotel (autorización), requiere previamente estar registrados (autenticación) como clientes del hotel.  El acceso a un avión con el billete de embarque (autorización) requiere la confirmación de identidad en el punto de acceso (autenticación) y para ello utiliza la información del nombre que aparece en la tarjeta de embarque. Lo diferencial de este último caso, es que se ha aprovechado el objeto que se presenta en el embarque (la tarjeta de embarque, que actúa a modo de ‘token de acceso’) para incluir el nombre de la persona (un atributo de identidad) que puede validarse en una autenticación.

OpenID Connect utiliza esa misma idea de incluir atributos de usuario pero estandariza la forma de hacerlo extendiendo el proceso de autorización de OAuth 2.0, es decir:

  • Parte de un flujo de autorización que funciona bien en entornos de APIs y por tanto con aplicaciones web y móvil OAuth2.0.
  • Lo extiende incluyendo atributos relativos al usuario que permiten realizar autenticaciones y define una forma concreta de hacerlo: en lugar de añadir más información al token de acceso, crea otra estructura de información (otro token) específico con la información del usuario, que es el ‘token de identidad’.  
  • Este ‘token de identidad’ tiene una estructura denominada JWT (JSON Web Token), que es un mecanismo compacto y autocontenido de empaquetar información de forma segura para el transporte por redes. Esta información está firmada por un certificado, con lo que puede utilizarse para autenticar de forma fiable.
  • Por último, OpenID Connect, cambia la finalidad: aunque el flujo de OAuth 2.0 y el intercambio de ‘token de acceso’ se sigue realizando, el proceso ya no está orientado a una autorización, sino que es el mecanismo de soporte para poder intercambiar ‘tokens de identidad’ que se validan en autenticaciones.   

OpenID Connect admite estrategias diferentes para autenticar a los usuarios y esto se traduce en flujos de autenticación diferentes. Las diferencias entre unos y otros radican en cómo y cuándo se hace uso de los Tokens de Acceso y de los Tokens de Identidad. 

Esta flexibilidad hace que OpenID Connect pueda tenerse en cuenta y aplicarse en escenarios de autenticación muy dispares y de aquí la creciente aceptación de esta tecnología.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

TE PUEDE GUSTAR

RECIBE LA NEWSLETTER

*Email: *Nombre apellidos: *Empresa: Cargo: Sector:

 
Please don't insert text in the box below!

ARTÍCULOS MÁS RECIENTES

ESCUCHA NUESTRO PODCAST

SÍGUENOS EN RRSS

MÁS COMENTADOS

Scroll al inicio