HttpOnly Cookies y Filtros Avanzados
1. Seguridad: Cookies HttpOnly Backend (ChatbotApi): AuthController.cs : Ahora setea una cookie HttpOnly, Secure y SameSite=Strict llamada X-Access-Token en lugar de devolver el token en el cuerpo de la respuesta. AuthController.cs : Añadido endpoint logout para invalidar la cookie. Program.cs : Configurado JwtBearer para leer el token desde la cookie si está presente. Frontend (chatbot-admin): apiClient.ts : Configurado con withCredentials: true para enviar cookies automáticamente. Eliminado el interceptor de localStorage. Login.tsx : Eliminado manejo de token manual. Ahora solo comprueba éxito (200 OK). App.tsx : Refactorizado para comprobar autenticación mediante una petición a /api/admin/contexto al inicio, en lugar de leer localStorage. 2. Filtros y Búsqueda Logs ( AdminController.cs & LogsViewer.tsx ): Implementado filtrado en servidor por Fecha Inicio, Fecha Fin y Búsqueda de texto. Frontend actualizado con selectores de fecha y barra de búsqueda. Contexto y Fuentes ( ContextManager.tsx & SourceManager.tsx ): Añadida barra de búsqueda en el cliente para filtrar rápidamente por nombre, valor o descripción.
This commit is contained in:
@@ -34,7 +34,7 @@ builder.Services.AddCors(options =>
|
||||
"http://localhost:5174",
|
||||
"http://localhost:5175")
|
||||
.AllowAnyHeader()
|
||||
// [SEGURIDAD] Solo permitimos los verbos necesarios. Bloqueamos TRACE, HEAD, etc.
|
||||
.AllowCredentials() // [SEGURIDAD] Necesario para Cookies HttpOnly
|
||||
.WithMethods("GET", "POST", "PUT", "DELETE", "OPTIONS");
|
||||
});
|
||||
});
|
||||
@@ -85,6 +85,19 @@ builder.Services.AddAuthentication(options =>
|
||||
)),
|
||||
ClockSkew = TimeSpan.Zero // Token expira exactamente cuando dice
|
||||
};
|
||||
|
||||
// [SEGURIDAD] Evento para permitir lectura de Token desde Cookie
|
||||
options.Events = new JwtBearerEvents
|
||||
{
|
||||
OnMessageReceived = context =>
|
||||
{
|
||||
if (context.Request.Cookies.ContainsKey("X-Access-Token"))
|
||||
{
|
||||
context.Token = context.Request.Cookies["X-Access-Token"];
|
||||
}
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
// [SEGURIDAD] RATE LIMITING AVANZADO
|
||||
|
||||
Reference in New Issue
Block a user