xTaskjs 1.0 ya está disponible: cuentas por rol, documentación y una interfaz personalizable.

Paquetes

@xtaskjs/security

Autenticación JWT y JWE, decoradores de autorización y ciclo de vida de security compatible con DI.

npm install @xtaskjs/security passport passport-jwt reflect-metadata Ruta del paquete: packages/security

Resumen

Qué controla este paquete en el runtime

Security se apoya en la canalización base de rutas. Registra estrategias, autentica peticiones mediante flujos compatibles con Passport e inyecta el estado de autenticación en el contexto de ejecución para guards y controladores.

Qué ofrece

  • registerJwtStrategy() y registerJweStrategy() definen los puntos de entrada de autenticación.
  • Authenticated, Auth, Roles y AllowAnonymous decoran rutas públicas o protegidas.
  • SecurityAuthenticationService y SecurityAuthorizationService se inyectan a través del contenedor.
  • La integración con el ciclo de vida es automática cuando CreateApplication() detecta el paquete.

Cómo encaja

  • Depende de la metadata de rutas de @xtaskjs/core y @xtaskjs/common.
  • Se usa en los ejemplos de security con node-http y Express, y en esta implementación de sesiones de administración.

Mapa de uso

Qué peso tiene este paquete dentro del runtime

Arranque

4/5

Inyección de dependencias

4/5

Seguridad

5/5

Entrega HTTP

3/5

Integraciones

4/5

Flujo del paquete

Cómo atraviesa este paquete las fases del runtime de xtaskjs

Antes del arranque

Registra estrategias JWT o JWE y decora controladores protegidos para que el framework sepa qué superficie de autenticación publicar.

Durante CreateApplication()

Security inicializa servicios de autenticación y autorización, conecta flujos compatibles con Passport y expone el contexto auth a la canalización de rutas.

Durante app.close()

El gestor del ciclo de vida de security desmonta su estado junto con el resto del runtime de la aplicación.

Superficie API

Exports representativos del paquete original

Decoradores de ruta

  • Authenticated
  • Auth
  • Roles
  • AllowAnonymous

APIs de estrategias

  • registerJwtStrategy
  • registerJweStrategy
  • JwtSecurityStrategy
  • JweSecurityStrategy

Servicios inyectados

  • InjectAuthenticationService
  • InjectAuthorizationService
  • InjectPassport
  • InjectSecurityLifecycleManager

Uso

Flujo típico de adopción

1. Registra estrategias

Llama a registerJwtStrategy() o registerJweStrategy() antes del arranque, o usa sus formas decorador en módulos de configuración.

2. Protege rutas de forma declarativa

Aplica Authenticated, Roles, Auth o AllowAnonymous a controladores y handlers de ruta en lugar de incrustar comprobaciones auth en la lógica de negocio.

3. Inyecta servicios de security cuando haga falta

Para flujos avanzados, inyecta los servicios de autenticación, autorización o ciclo de vida desde el contenedor DI.

Ejemplo

Fragmento de referencia

Estrategia JWT y controlador protegido
import { Controller, Get } from "@xtaskjs/common";
import { Authenticated, Roles, registerJwtStrategy } from "@xtaskjs/security";

registerJwtStrategy({
  name: "default",
  default: true,
  secretOrKey: process.env.JWT_SECRET,
});

@Controller("/admin")
@Authenticated()
export class AdminController {
  @Get("/")
  @Roles("admin")
  dashboard(req: any) {
    return { user: req.user.sub, roles: req.auth.roles };
  }
}

Ejemplos

Ejemplos oficiales para revisar después

Ejemplos de referencia: 06-security_app and 07-security_express_app

Relacionados

Paquetes que suelen usarse junto a este