npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

mbcj-oauth-sv

v1.3.8

Published

Libreria backend para OAuth

Downloads

78

Readme

MBCJ OAuth SV

Librería de backend para Node.js diseñada para facilitar la integración con el servicio de OAuth del Ministerio de Bienestar Ciudadano y Justicia. Proporciona las herramientas necesarias para gestionar la autenticación y autorización de usuarios en aplicaciones que utilizan Express.js.

Características

  • Autenticación OAuth: Intercambio de código de autorización por token de acceso.
  • Gestión de Datos de Usuario: Obtención de datos del usuario desde el servicio OAuth.
  • Middleware de Validación: Middleware para Express que protege rutas verificando la validez de los tokens JWT y los permisos de usuario.
  • Obtención de Clave Pública: Script para descargar y almacenar la clave pública necesaria para la verificación de tokens.
  • Actualización de Datos: Funcionalidad para actualizar la información del usuario en la base de datos local a partir de los datos de OAuth.

Tecnologías y Dependencias

  • Node.js: Entorno de ejecución para JavaScript.
  • Express: Framework para la construcción de aplicaciones web y APIs.
  • Axios: Cliente HTTP basado en promesas para realizar peticiones a la API de OAuth.
  • JSONWebToken: Librería para la generación y verificación de JSON Web Tokens (JWT).

Estructura del Proyecto

El proyecto está organizado en los siguientes módulos principales:

  • index.js: Archivo principal que exporta todas las funcionalidades de la librería.
  • oauthRouter.js: Contiene la lógica de los endpoints de Express para el flujo de OAuth (obtener token, datos de usuario, etc.).
  • middleware.js: Proporciona el middleware para la validación de usuarios y tokens en las rutas protegidas.
  • obtenerClave.js: Incluye la función para descargar y guardar la clave pública del servicio de OAuth.

Instalación

Para instalar la librería en tu proyecto, utiliza npm:

npm install mbcj-oauth-sv

Uso

A continuación se muestran ejemplos de cómo integrar la librería en una aplicación Express.

1. Middleware de Autenticación

El middleware permite proteger tus rutas, asegurando que solo los usuarios autenticados y con los permisos adecuados puedan acceder.

const express = require('express');
const router = express.Router();
const { middleware } = require('mbcj-oauth-sv');
const Usuario = require('./models/usuario'); // Importa tu modelo de Sequelize para Usuario

// Inicializa el middleware pasándole el modelo de Usuario
const MW = middleware(Usuario);

// Ejemplo de uso en una ruta protegida
// El primer parámetro es un array con los tipo_usuario_id permitidos.
// El segundo parámetro (booleano) indica si el token es requerido.
router.get('/ruta-protegida', MW.validarUsuarioMW([3, 4], true), (req, res) => {
  res.json({ mensaje: 'Acceso concedido', usuario: req.user });
});

module.exports = router;

2. API de OAuth

El router de OAuth maneja la comunicación con el servicio de autenticación.

const express = require('express');
const { oauthRouter } = require('mbcj-oauth-sv');
const Usuario = require('./models/usuario'); // Importa tu modelo de Sequelize para Usuario

const app = express();

// Monta el router de OAuth en la ruta que prefieras, pasándole el modelo de Usuario
app.use('/auth', oauthRouter(Usuario));

app.listen(3000, () => {
  console.log('Servidor escuchando en el puerto 3000');
});

3. Script para Obtener la Clave Pública

Este script descarga la clave pública de OAuth, necesaria para verificar la firma de los tokens JWT. Es recomendable ejecutarlo durante el despliegue o en un proceso de inicialización.

const { obtenerClavePublica } = require('mbcj-oauth-sv');

// Estas variables deberían obtenerse del entorno (.env)
const url_oauth = process.env.OAUTH_CLAVE_URL;
const ruta_directorio = process.env.OAUTH_CLAVE_DIR; // Debe ser una ruta absoluta
const nombre_archivo = process.env.OAUTH_CLAVE_FILE;

obtenerClavePublica(url_oauth, ruta_directorio, nombre_archivo)
  .then(() => {
    console.log('Clave pública descargada y guardada correctamente.');
  })
  .catch((error) => {
    console.error('Error al obtener la clave pública:', error);
  });

Variables de Entorno

Para que la librería funcione correctamente, es necesario configurar las siguientes variables de entorno en un archivo .env:

Para el Middleware

  • TOKEN_ADMIN: Token especial para el superadministrador.
  • OAUTH_CLAVE_DIR: Ruta absoluta al directorio donde se guardará la clave pública.
  • OAUTH_CLAVE_FILE: Nombre del archivo de la clave pública.

Para la API de OAuth

  • OAUTH_URL: URL base del servicio de OAuth.
  • OAUTH_ID: ID de cliente proporcionado por el servicio de OAuth.
  • OAUTH_SECRET: Secreto de cliente proporcionado por el servicio de OAuth.
  • OAUTH_VALIDADO: (Opcional, TRUE/FALSE) Indica si se debe requerir que el usuario esté validado en OAuth.
  • OAUTH_REEMPLAZAR_NOMBRE: (Opcional, TRUE/FALSE) Indica si el nombre del usuario en la base de datos local debe actualizarse con el de OAuth.

Para el Script de Obtención de Clave

  • OAUTH_CLAVE_URL: URL completa para descargar la clave pública.
  • OAUTH_CLAVE_DIR: Ruta absoluta al directorio donde se guardará la clave.
  • OAUTH_CLAVE_FILE: Nombre del archivo para la clave.

Licencia

Este proyecto está bajo la Licencia ISC.

Contacto

Desarrollado por damian greco.