0% encontró este documento útil (0 votos)
43 vistas6 páginas

01 Express JWT

Este documento presenta un tutorial sobre el uso de JWT (JSON Web Tokens) para autenticación en APIs REST. Explica brevemente qué es JWT, cómo funciona mediante la creación y verificación de tokens firmados, y proporciona un ejemplo práctico de implementación con Node.js usando Express y JSONWebToken para crear un token después de iniciar sesión y verificar el token en rutas protegidas.

Cargado por

King AMV ́s
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
43 vistas6 páginas

01 Express JWT

Este documento presenta un tutorial sobre el uso de JWT (JSON Web Tokens) para autenticación en APIs REST. Explica brevemente qué es JWT, cómo funciona mediante la creación y verificación de tokens firmados, y proporciona un ejemplo práctico de implementación con Node.js usando Express y JSONWebToken para crear un token después de iniciar sesión y verificar el token en rutas protegidas.

Cargado por

King AMV ́s
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 6

Tutorial: uso de JWT

[email protected] - 2022

Fuentes:

https://asfo.medium.com/autenticando-un-api-rest-con-nodejs-y-jwt-json-web-tokens-
5f3674aba50e

https://openwebinars.net/blog/que-es-json-web-token-y-como-funciona/

Requisitos previos
Tener una instalación de nodejs y vsc

Qué es JWT?
JWT (JSON Web Token) es un estándar qué está dentro del documento RFC 7519.

En el mismo se define un mecanismo para poder propagar entre dos partes, y de forma segura,
la identidad de un determinado usuario, además con una serie de claims o privilegios.

Estos privilegios están codificados en objetos de tipo JSON, que se incrustan dentro de del
payload o cuerpo de un mensaje que va firmado digitalmente.

El token JWT tiene tres partes codificadas en Base64, cada una separada por un punto. Puede
comprobarse en https://jwt.io/

Estas partes son:

Header: encabezado dónde se indica, al menos, el algoritmo y el tipo de token, por


ejemplo el algoritmo HS256 y un token de tipo JWT.
Payload: donde aparecen los datos de usuario y privilegios, así como toda la información
que queramos añadir, todos los datos que creamos convenientes.
Signature: una firma que nos permite verificar si el token es válido.

Para asegurar que este intercambio de información sea cifrada, debe usarse HTTPS.

Mecanismo
El mecanismo de autenticación y autorización mediante JWT es el siguiente:
Creación del proyecto
Crear una carpeta jwt e instalar express y jsonwebtoken y luego abrir el proyecto con vsc:

mkdir jwt
cd jwt
npm install --save express jsonwebtoken
touch index.js
mkdir configs
touch configs/config.js
code .
Editar el archivo config.js

module.exports = {
llave: "swempresarial2022*"
}

Editar el archivo index.js


const express = require('express'),
bodyParser = require('body-parser'),
jwt = require('jsonwebtoken'),
config = require('./configs/config'),
app = express();

app.set('llave', config.llave);
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.listen(3000, () => {
console.log('Servidor iniciado en el puerto 3000 http://localhost:3000')
});

app.get('/', function (req, res) {


res.send('Inicio ok');
});

//login:
app.post('/autenticar', (req, res) => {
if (req.body.usuario === "curso" && req.body.contrasena === "holamundo") {
const payload = {
check: true
};
const token = jwt.sign(payload, app.get('llave'), {
expiresIn: 1440
});
res.json({
mensaje: 'Autenticación correcta.',
token: token
});
} else {
res.json({ mensaje: "Usuario o contraseña incorrectos." })
}
})

//middleware:
const rutasProtegidas = express.Router();
rutasProtegidas.use((req, res, next) => {
const token = req.headers['access-token'];

if (token) {
jwt.verify(token, app.get('llave'), (err, decoded) => {
if (err) {
return res.json({ mensaje: 'Token incorrecto.' });
} else {
req.decoded = decoded;
next();
}
});
} else {
res.send({
mensaje: 'Debe indicar un token.'
});
}
});

//api:
app.get('/datos', rutasProtegidas, (req, res) => {
const datos = [
{ id: 1, nombre: "Luisa" },
{ id: 2, nombre: "Sergio" },
{ id: 3, nombre: "Carlos" }
];

res.json(datos);
});

Ejecutar el servidor:

node index.js

Se puede acceder al servidor:

Para comprobar la autenticación, utilizar un cliente de API REST. En este caso usamos el
plugin "RESTED" de Firefox:
Luego con el token devuelto, ya se puede acceder a los endpoints restringidos:

También podría gustarte