Autenticación Machine to Machine con Express y Auth0
Clase 15 de 28 • Curso de Auth0: Implementación de Autenticación y Seguridad Web
Resumen
¿Cómo implementar autenticación machine to machine usando Express?
La autenticación backend a backend, o machine to machine, es esencial para asegurar la comunicación entre APIs. En esta sesión, exploraremos cómo configurar esta autenticación utilizando el framework Express y Auth0. Siguiendo un proceso detallado y utilizando los Quickstarts de Auth0, podrás implementar este tipo de autenticación de manera eficiente.
¿Qué pasos seguir para configurar Auth0?
- Crear y configurar una nueva API:
- Accede al dashboard de Auth0 y crea una nueva API.
- Define un identificador, por ejemplo,
https://machine-to-machine.failure.go
.
- Definir permisos y scopes:
- Una vez creada la API, es crucial establecer permisos.
- Un ejemplo podría ser el permiso
read:messages
, necesario para leer mensajes a través de la API.
¿Cómo proteger el servidor con Express y Auth0?
Una vez configurada la API, es el momento de integrar la protección en el backend utilizando Express.
-
Configurar middleware de autenticación:
- Instala el paquete
express-oauth2-jwt-bearer
. Este paquete es fundamental para validar tokens JWT en tus endpoints. - Crea el middleware encargándose de controlar la autenticación:
const { auth, requiredScopes } = require('express-oauth2-jwt-bearer'); const checkJwt = auth({ audience: 'https://machine-to-machine.failure.go', issuerBaseURL: `https://tu-dominio.auth0.com/`, });
- Instala el paquete
-
Proteger endpoints privados:
- Asegúrate de que tu API tenga un endpoint protegido que requiera autenticación:
app.get('/api/private', checkJwt, (req, res) => { res.send('Hello from a private endpoint! You need to be authenticated to see this.'); });
-
Validar scopes en endpoints específicos:
- Añade validación de scopes para controlar el acceso a ciertos recursos:
app.get('/api/private-scoped', checkJwt, requiredScopes('read:messages'), (req, res) => { res.send('Hello from a private endpoint with scope! You need to be authenticated and have the right scope to see this.'); });
¿Cómo realizar pruebas de nuestra implementación?
Para asegurarte de que la implementación está correcta, es importante realizar pruebas utilizando un cliente de test.
-
Crear y autorizar una aplicación de pruebas:
- Desde la tab de pruebas en Auth0, genera un cliente de test.
-
Pedir y probar un access token:
- Obtén un
access token
y realiza peticiones para verificar el acceso a tus endpoints protegidos:
curl --request GET \ --url http://localhost:3010/api/private \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
- Obtén un
-
Verificar acceso a endpoints con scopes:
- Realiza una nueva petición con el
scope
necesario para asegurar que la validación de scopes también funciona correctamente:
curl --request GET \ --url http://localhost:3010/api/private-scoped \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN_WITH_SCOPE'
- Realiza una nueva petición con el
Con este enfoque, puedes asegurar que tu implementación de machine to machine es robusta, efectiva, y está lista para proteger tus datos. No dudes en experimentar y expandir este ejemplo usando otros frameworks de backend como Django. ¡La práctica es la clave para el dominio de habilidades!