Autenticación y autorización
La autenticación consiste en demostrar quién eres para poder obtener acceso a un sistema o una aplicación (en la mayoría de los casos). Puede solicitarte algo que conoces (una contraseña), algo que eres (una huella digital) o algo que posees (un token).
Una vez que te autentificas, se te concede autorización o permiso para realizar ciertas acciones permitidas.
Autenticación
Cómo autenticar un usuario en una servicio web.
Base de datos
La base de datos que estamos utilizando es un array en memoria con 5 usuarios:
alice@acme.com
:longaniza
bob@acme.com
:longaniza
charlie@acme.com
:longaniza
dave@acme.com
:longaniza
eva@acme.com
:longaniza
npm
bcrypt
Para encriptar la contraseña, utilizamos el paquete bcrypt
.
npm install bcrypt
dotenv
Para gestionar las variables de entorno se debe instalar el paquete dotenv
npm install dotenv
Para poder utilizar las variables de entorno se debe configurar el archivo .env
express
Para poder utilizar el servidor se debe instalar el paquete express
npm install express
jsonwebtoken
jsonwebtoken
es una librería que nos permite crear y validar JWT.
npm install jsonwebtoken
node
index.js
En este archivo se encuentra la lógica de la aplicación.
data/users.json
En este archivo se encuentra el json con la tabla usuarios de la base de datos los usuarios.
middlewares/privateRoute.js
En este archivo se encuentra el middleware que se encarga de validar que el usuario esté autenticado.
Autorización
Si nos fijamos en el GET
de /users/:id
podemos ver que devuelve el usuario cuyo id es el que se recibe como parametro en el URL siempre y cuando la petición la haga un usuario autenticado (middleware privateRoute
).
Añadamos una autorización: El usuario que hace la petición NO puede ser el mismo que el que se quiere ver. Por ello, se debe validar que el usuario que hace la petición no sea el mismo que el que se quiere ver:
Github
El repositorio de este proyecto está disponible aquí.