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.
Capas y responsabilidades
Sección titulada «Capas y responsabilidades»| Proyecto | Tipo | Responsabilidad |
|---|---|---|
AccessPlatform.Identity.Domain | Class Library | Constantes de roles/permisos, tipos de auditoría y entidades de dominio. |
AccessPlatform.Identity.Application | Class Library | DTOs, contratos, opciones e interfaces de aplicación. |
AccessPlatform.Identity.Infrastructure | Class Library | EF Core, Identity, SQL Server, permisos, auditoría, SMTP, Turnstile y seeder. |
AccessPlatform.Identity.Api | ASP.NET Core Web API | Endpoints REST reutilizables para autenticación, usuarios, roles y 2FA. |
AccessPlatform.Web | ASP.NET Core Razor Pages | Portal web para login, dashboard y administración operativa. |
Dependencias
Sección titulada «Dependencias»Web -> Application -> DomainWeb -> Infrastructure -> Application -> DomainApi -> Application -> DomainApi -> Infrastructure -> Application -> DomainInfrastructure -> Application / DomainDomain -> sin dependencias superioresPersistencia
Sección titulada «Persistencia»Todas las tablas del módulo Identity viven en el esquema:
identityTablas principales:
identity.Usersidentity.Rolesidentity.UserRolesidentity.UserClaimsidentity.UserLoginsidentity.UserTokensidentity.RoleClaimsidentity.LoginAuditLogsidentity.__EFMigrationsHistoryEsta separación permite instalar el módulo de identidad dentro de una base de datos existente sin interferir con tablas operativas del cliente.
Flujo de login
Sección titulada «Flujo de login»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 -> DashboardFlujo de permisos
Sección titulada «Flujo de permisos»Usuario autenticado -> Roles asignados -> Claims de rol con ClaimType = permission -> PermissionService resuelve permisos -> AuthorizationPolicyProvider crea políticas dinámicas -> AuthorizePermission / Authorize(Policy) controla accesoAPI vs Web
Sección titulada «API vs Web»| Componente | Uso |
|---|---|
AccessPlatform.Web | Portal principal usado por el cliente. Usa Razor Pages e Identity directamente. |
AccessPlatform.Identity.Api | Capa reusable para integraciones, pruebas y exposición REST del módulo Identity. |
Módulos futuros
Sección titulada «Módulos futuros»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.DomainAccessPlatform.DomainRegistry.ApplicationAccessPlatform.DomainRegistry.InfrastructureAccessPlatform.DomainRegistry.Api