OpenID Connect: Autenticación sobre OAuth paso a paso
Clase 19 de 25 • Curso de OAuth 2.0 y OpenID Connect: Flujos de Autenticación y Casos de Estudio
Resumen
¿Qué es OpenID Connect?
OpenID Connect es una capa que se añade sobre OAuth 2.0, destinada a manejar la autenticación. Mientras que OAuth 2.0 se centra en la autorización, OpenID Connect verifica la identidad de los usuarios. Esta dualidad permite un acceso seguro y autenticado, y debido a su naturaleza superpuesta, mantiene procesos muy similares a los de OAuth.
- Autenticación vs. Autorización: OAuth 2.0 se ocupa exclusivamente de los tokens de acceso para acceder a recursos, mientras que OpenID Connect introduce el ID token.
- Seguridad en capas: La base de estas operaciones es HTTPS para garantizar transacciones seguras.
Al igual que OAuth, los procesos de OpenID Connect incluyen un authorization request que contiene un client ID y una URL de redirección. Este aspecto debe ir acompañado de un scope específico para OpenID, que no solo puede incluir 'profile' y 'email', sino que precisamente el scope 'OpenID' es el que dispara el protocolo.
¿Cómo funciona el flujo de autenticación?
El flujo de autenticación empieza con una autorización solicitada y posterior redirección, similar a los patrones de autorización, pero persiguiendo la verificación de identidad.
- Solicitud de Autorización: Comenzando con un cliente que envía un request con su client ID.
- Pantalla de 'Sign In': Presentada al usuario si no existe una sesión activa.
- Authorization Grant: Generado una vez que el usuario autoriza al cliente.
- Cambio de código por token: Intercambio del authorization code por un token, pudiendo ser necesario autenticación adicional del cliente.
- ID Token vs. Access Token:
- ID Token: Vinculado a OpenID Connect, obligatoriamente es un JSON Web Token (JWT) que permite la decodificación para acceder a la información básica del usuario.
- Access Token: Permite el acceso a los recursos de la API, y podría ser un JWT o un token opaco.
- Endpoint UserInfo: Además proporciona un método directo para obtener más información del usuario.
¿Cuáles son los flujos recomendados de OpenID Connect?
Aunque cualquier flujo de OAuth puede ser adaptado para OpenID Connect, se sugieren los siguientes para una implementación eficiente:
- Authorization Code Flow: Este flujo tradicional es ampliamente recomendado debido a su robustez y seguridad.
- Authorization Code Flow con PKCE (Proof-Key for Code Exchange): Mejora la seguridad mediante un intercambio de código adicional.
- Implicit Flow y Hybrid Flow: Aunque disponibles, cada uno presenta desafíos en implementación, siendo más complejo el Implicit Flow y de uso más específico el Hybrid Flow.
La gran ventaja de OpenID Connect sobre OAuth es la inclusión del ID token que facilita al cliente verificar la identidad del usuario con base en información decodificada. Para profundizar en implementaciones prácticas, se recomienda explorar ejemplos como el uso de Auth0 para el Implicit Flow, lo cual será abordado en clases subsiguientes. La implementación de OpenID Connect, por tanto, es crucial para verificar identidades, asegurando procesos de acceso más seguros y robustos.