## ¿Qué son los tokens en Microsoft Entra ID?
- Los tokens no autentican por si mismos. Son resultado de un proceso de autenticación y se usan para autorizar accesos.
- Los tokens son credenciales temporales, firmadas digitalmente, que representan la identidad y los permisos de un usuario o aplicación.
En la gestión moderna de identidad y acceso, Microsoft Entra ID utiliza tokens como mecanismos seguros y estandarizados para representar la identidad de un usuario o aplicación y los permisos otorgados.
Estos tokens, generalmente en formato JWT (JSON Web Token), son emitidos tras un proceso de autenticación basado en protocolos como el de OpenID Connect u OAuth 2.0, y contienen claims que describen quien es el usuario y a que recursos puede acceder.
Gracias al uso de tokens, las aplicaciones pueden validar identidades y autorizar accesos sin necesidad de manejar credenciales directamente, mejorando la seguridad y la escalabilidad de los sistemas.
- Nos son cadenas de caracteres significativas para ciertos lenguajes. No dependen del lenguaje de programación.
- Son artefactos de seguridad estandarizados.
- Usualmente son JWT (Json Web Tokens).
- Un token es entendible por cualquier plataforma que implemente el estándar.
- Son credenciales temporales emitidas por un proveedor de identidad, firmadas digitalmente, que contienen claims.
**Tipos Principales**
- ID Token --> Identidad del usuario.
- Access Token --> Permisos de Acceso.
- Refresh Token --> Renovación (Para evitar reinicios de sesión).
### ¿Cómo se validan los tokens de seguridad y los tokens JWT ?
La validación de tokens de seguridad es un proceso esencial para garantizar que un token es auténtico, no ha sido alterado y sigue siendo válido. Este proceso incluye:
- **Comprobación de la firma**: La aplicación receptora valida la firma del token usando la clave pública del proveedor de identidad (por Ejemplo, Microsoft Entra ID). Permitiendo verificar que el token fue emitido por una autoridad confiable y no fue modificado.
- **Validación de claims:** Una vez validad la firma, la aplicación inspecciona los claims contenidos en el token, como el identificador del usuario, el tenant, la audiencia, el emisor y la fecha de expiración, para asegurarse de que el token es válido para el contexto de uso.
Como se utilizan los JSON Web Tokens (JWT):
Microsoft Entra ID utiliza ampliamente el formato JSON Web Token (JWT) debido a su estructura estándar y su compatibilidad con protocolos modernos como OAuth 2.0. y OpenID Connect.
-Claims: Son pares claves-valor que describen la identidad del usuario o aplicación, y los permisos otorgados debido a ello. Estos claims permiten a las aplicaciones tomar decisiones de autenticación y autorización sin necesidad de manejar credenciales directamente.
- Un JWT puede decodificarse para leerse. Pero solo es confiable después de validar su firma, emisor, audiencia y expiración.
- La seguridad de un token JWT no está en ocultar su contenido, sino en la validación criptográfica de su firma y claims.
### ¿Cómo se emiten tokens en Microsoft Entra External ID?
Entra External ID emite tokens como resultado de flujos de autenticación basados en OAuth 2.0 y OpenID Connect.
Las aplicaciones no generan tokens en Entra External ID; los solicitan. Los tokens se emiten automáticamente por el proveedor de identidad al completar un flujo de autenticación.
- **Registro y configuración de la aplicación:**
La aplicación debe registrarse en el tenant de Entra External ID, definiendo sus URLs de redirección y permisos. Posteriormente, se habilita el uso de uno o más flujos de usuario (User Flows) que determinan cómo se autentican los usuarios.
- **Flujos de usuario (User Flows):**
Los User Flows definen la experiencia de inicio de sesión, registro y recuperación de cuenta. Al completarse exitosamente un flujo, Entra External ID emite los tokens correspondientes (ID token y, opcionalmente, access token) para la aplicación.
- **Solicitudes de tokens:**
Las aplicaciones solicitan tokens utilizando protocolos estándar como **OpenID Connect y OAuth 2.0**, especificando los scopes o permisos requeridos. El User Flow controla el comportamiento del endpoint de autenticación.
- **Inspección de tokens:**
Durante el desarrollo, herramientas como **jwt.ms** permiten decodificar e inspeccionar los claims contenidos en los tokens, facilitando la comprensión y depuración del flujo de identidad.
**Ejemplo práctico**
Supongamos una aplicación llamada **demoApp** registrada en Entra External ID. Al iniciar sesión, el usuario es redirigido a un User Flow configurado. Una vez autenticado, el servicio emite un **ID token** firmado digitalmente y redirige al usuario a una URL previamente registrada, donde la aplicación puede validar el token y utilizar los claims para controlar el acceso.