Ir al contenido

Arquitectura

AccessPlatform usa una arquitectura modular orientada a identidad. El módulo actual se divide en capas Domain, Application, Infrastructure, API y Web, manteniendo el dominio y los contratos desacoplados de detalles técnicos como EF Core, ASP.NET Core Identity, SMTP o Turnstile.

ProyectoTipoResponsabilidad
AccessPlatform.Identity.DomainClass LibraryConstantes de roles/permisos, tipos de auditoría y entidades de dominio.
AccessPlatform.Identity.ApplicationClass LibraryDTOs, contratos, opciones e interfaces de aplicación.
AccessPlatform.Identity.InfrastructureClass LibraryEF Core, Identity, SQL Server, permisos, auditoría, SMTP, Turnstile y seeder.
AccessPlatform.Identity.ApiASP.NET Core Web APIEndpoints REST reutilizables para autenticación, usuarios, roles y 2FA.
AccessPlatform.WebASP.NET Core Razor PagesPortal web para login, dashboard y administración operativa.
Web -> Application -> Domain
Web -> Infrastructure -> Application -> Domain
Api -> Application -> Domain
Api -> Infrastructure -> Application -> Domain
Infrastructure -> Application / Domain
Domain -> sin dependencias superiores

Todas las tablas del módulo Identity viven en el esquema:

identity

Tablas principales:

identity.Users
identity.Roles
identity.UserRoles
identity.UserClaims
identity.UserLogins
identity.UserTokens
identity.RoleClaims
identity.LoginAuditLogs
identity.__EFMigrationsHistory

Esta separación permite instalar el módulo de identidad dentro de una base de datos existente sin interferir con tablas operativas del cliente.

Usuario
-> Login Razor Page / API
-> Turnstile si está habilitado
-> ASP.NET Core Identity valida credenciales
-> Validación de usuario activo
-> 2FA si aplica
-> Cookie de sesión
-> Auditoría
-> Alerta de login por email si Email.Enabled = true
-> Dashboard
Usuario autenticado
-> Roles asignados
-> Claims de rol con ClaimType = permission
-> PermissionService resuelve permisos
-> AuthorizationPolicyProvider crea políticas dinámicas
-> AuthorizePermission / Authorize(Policy) controla acceso
ComponenteUso
AccessPlatform.WebPortal principal usado por el cliente. Usa Razor Pages e Identity directamente.
AccessPlatform.Identity.ApiCapa reusable para integraciones, pruebas y exposición REST del módulo Identity.

El módulo futuro DomainRegistry debe ser independiente y consumir el sistema de permisos del módulo Identity sin mezclar responsabilidades.

Estructura sugerida:

AccessPlatform.DomainRegistry.Domain
AccessPlatform.DomainRegistry.Application
AccessPlatform.DomainRegistry.Infrastructure
AccessPlatform.DomainRegistry.Api