Autenticación básica en Node.js usando el encabezado HTTP

La autenticación del cliente es el primer paso antes de iniciar cualquier Aplicación. La autenticación básica en la aplicación Node.js se puede realizar con el marco de ayuda express.js . El marco Express.js se usa principalmente en la aplicación Node.js debido a su ayuda en el manejo y enrutamiento de diferentes tipos de requests y respuestas realizadas por el cliente utilizando diferentes Middleware. 

El encabezado HTTP WWW-Authenticate es un encabezado de tipo respuesta y sirve como soporte para varios mecanismos de autenticación que también son importantes para controlar el acceso a las páginas y otros recursos.

Explicación de la autenticación:

Instalación del módulo: Instale el módulo express usando el siguiente comando.

npm install express

Estructura del proyecto:

Estructura del proyecto

Nombre de archivo- index.js

Javascript

// Requiring module
const express = require("express");
const fs = require("fs");
var path = require('path');
 
const app = express();
 
function authentication(req, res, next) {
    var authheader = req.headers.authorization;
    console.log(req.headers);
 
    if (!authheader) {
        var err = new Error('You are not authenticated!');
        res.setHeader('WWW-Authenticate', 'Basic');
        err.status = 401;
        return next(err)
    }
 
    var auth = new Buffer.from(authheader.split(' ')[1],
    'base64').toString().split(':');
    var user = auth[0];
    var pass = auth[1];
 
    if (user == 'admin' && pass == 'password') {
 
        // If Authorized user
        next();
    } else {
        var err = new Error('You are not authenticated!');
        res.setHeader('WWW-Authenticate', 'Basic');
        err.status = 401;
        return next(err);
    }
 
}
 
// First step is the authentication of the client
app.use(authentication)
app.use(express.static(path.join(__dirname, 'public')));
 
// Server setup
app.listen((3000), () => {
    console.log("Server is Running ");
})

Ejecute index.js usando el siguiente comando:

node index.js
  • Abra cualquier navegador con la ubicación http://localhost:3000 en una ventana privada (para evitar una contraseña y un nombre de usuario guardados). Se producirá un pop cerca de la barra de direcciones. Complete el nombre de usuario y la contraseña que se mencionan en el código.

  • Si el nombre de usuario y la contraseña ingresados ​​coinciden con la mención, la ubicación index.html aparecerá en el navegador.

Explicación: El primer middleware se usa para verificar la autenticación del cliente cuando se inicia el servidor y el cliente ingresa la dirección del host local. Inicialmente , req.headers.authorization no está definido y la función de devolución de llamada next() devuelve el código de estado 401 de acceso no autorizado al navegador. El cliente llena las credenciales y las credenciales cifradas en formato base64. Después de eso, descifra los datos de formato base64 que contienen el nombre de usuario y la contraseña, luego, después de verificar que el nombre de usuario y la contraseña son correctos, el método next() llama al siguiente middleware que se menciona debajo del middleware de autenticación, de lo contrario, el formulario de autenticación aparece una y otra vez. .

Detalles del encabezado de la solicitud: 

Publicación traducida automáticamente

Artículo escrito por zack_aayush y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *