- 1

OAuth y OpenID Connect: Autenticación y Autorización Básica
05:01 - 2

¿Qué es la autenticación?
03:55 - 3

Autorización y Control de Acceso Basado en Roles
04:01 - 4

Protocolos Open Authorization y OpenID Connect: Alternativas y Comparación
05:32 - 5

Protección de Endpoints con Autenticación y Autorización Básica
11:14 - 6

Flujo de Open Authorization y Open ID con Discord
07:14
Firmado de JSON Web Tokens con Librería JWT en Node.js
Clase 9 de 25 • Curso de OAuth 2.0 y OpenID Connect: Flujos de Autenticación y Casos de Estudio
Contenido del curso
- 11

Implementación de flujos OAuth 2.0 con APIs populares
08:28 - 12

Flujos de Autorización en OAuth 2.0: Conceptos y Funcionamiento
11:55 - 13

Elección del Flujo Oauth 2.0 según Roles del Cliente y Servidor
07:08 - 14

Implementación de Authorization Code Flow con Spotify y React
16:07 - 15

Implementación de Authorization CodeFlow con Proofkit en Twitter API
12:25 - 16

Implementación de Implicit Flow con Twitch en React
07:11 - 17

Implementación de Client Credentials Flow en Discord
05:02 - 18

Implementación de Resource Owner Password Flow con Auth0
08:34 Quiz de Open Authorization 2.0
¿Cómo firmar un JSON Web Token?
La firma de un JSON Web Token (JWT) es un proceso esencial para garantizar la autenticidad y la integridad de los datos que se transfieren en aplicaciones web. Utilizando la librería jsonwebtoken, podemos implementar un sistema de firmado en tres pasos fundamentales: definir el payload, elegir el algoritmo adecuado y firmar el token con un secret o clave privada. Esta implementación es crucial para proteger tus endpoints y garantizar la seguridad en la comunicación de datos.
¿Qué necesitamos para firmar un JWT?
- Payload: Es el objeto JSON que contiene los Claim Names, como
sub,nameyexp. Utilizar la información del usuario verificado es vital para su correcta creación. - Secret o Private Key: Dependiendo del algoritmo de firmado:
- Simétrico (HS256): Usa un secret.
- Asimétrico (RS256): Usa una clave privada.
- Opciones o callback function: Puede incluir configuraciones adicionales para el JWT.
Implementación práctica en Node.js
Construcción del payload
Antes de proceder al firmado, es vital estructurar correctamente el payload. A continuación, un ejemplo de cómo podría hacerse:
const user = /* Suponemos que el usuario está previamente definido y verificado */;
const payload = {
sub: user.id, // Subject suele ser el ID del usuario
name: user.full_name, // Usamos el nombre completo ya que no tenemos un campo 'name'
exp: Math.floor(Date.now() / 1000) + (60 * 1) // Expiración en 1 minuto
};
Firmado del token
Para firmar el token, primero importamos la librería jsonwebtoken y luego utilizamos el método sign:
const jwt = require('jsonwebtoken');
const secret = process.env.SECRET_KEY; // Una buena práctica es utilizar variables de entorno
const token = jwt.sign(payload, secret);
Recomendaciones para el manejo del secret
- Asegúrate de que el
secretsea un string aleatorio y largo. - Usa variables de entorno para almacenar el
secrety otros datos sensibles. - Nunca expongas tu
secretni tu clave privada en el repositorio.
Prueba y verificación en Postman
Para comprobar que el servidor y los endpoint funcionan correctamente, primero verifica el acceso al endpoint público:
- Realiza un request a
publicpara confirmar que el servidor está funcionando. - Solicita al endpoint
tokenpara obtener el JWT firmado. - Evalúa el token recibido accediendo al endpoint privado.
Desafío para el lector: Implementa en otro lenguaje
Un gran ejercicio sería realizar esta misma implementación de firmado de un JWT en otro lenguaje de programación diferente a Node.js. Esto no solo te ayudará a ampliar tus habilidades, sino también a entender las diferencias entre las implementaciones en distintos entornos.
¡Anímate a poner en práctica tus conocimientos, explora nuevos lenguajes y sigue mejorando tus habilidades en la programación y seguridad de aplicaciones web!