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 bycript
            
        

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í.