Seguridad
AccessPlatform implementa seguridad basada en ASP.NET Core Identity, cookies seguras, 2FA, Turnstile, permisos por claims, auditoría y separación de persistencia en esquema identity.
Controles actuales
Sección titulada «Controles actuales»| Control | Estado | Observación |
|---|---|---|
| Cookies Identity | Implementado | Nombres personalizados AccessPlatform.*. |
| 2FA TOTP | Implementado | Google Authenticator y recovery codes. |
| Turnstile | Implementado configurable | Validación server-side cuando está habilitado. |
| Password policy | Implementado | Largo mínimo 12 y complejidad. |
| Lockout | Implementado | 5 intentos / 15 minutos por configuración local. |
| Permisos por claims | Implementado | ClaimType permission. |
| Menú por permisos | Implementado | Valida UsersView y RolesView. |
| Acciones server-side | Parcial/implementado en servicios de usuarios | UserService valida permisos sensibles. |
| Auditoría | Implementada | identity.LoginAuditLogs. |
| HTTPS redirection | Implementado | UseHttpsRedirection(). |
| Secretos externos | Pendiente producción | Deben salir de variables/vault. |
Cookies
Sección titulada «Cookies»Cookies configuradas:
AccessPlatform.IdentityAccessPlatform.ExternalAccessPlatform.TwoFactorRememberMeAccessPlatform.TwoFactorUserIdCriterios:
HttpOnly = trueSecure = AlwaysSameSite = LaxSlidingExpiration = trueRoles base
Sección titulada «Roles base»| Rol | Uso |
|---|---|
SuperUsuario | Acceso total mediante permiso *. |
Administrador | Rol administrativo configurable sin permisos implícitos en el seeder actual. |
Usuario | Rol base sin permisos administrativos. |
Permisos actuales
Sección titulada «Permisos actuales»Identity.Users.ViewIdentity.Users.CreateIdentity.Users.UpdateIdentity.Users.ActivateIdentity.Users.DeactivateIdentity.Users.DeleteIdentity.Users.ResetPasswordIdentity.Users.ResetTwoFactor
Identity.Roles.ViewIdentity.Roles.CreateIdentity.Roles.UpdateIdentity.Roles.AssignPermissions
*Autorización
Sección titulada «Autorización»Patrón web:
[AuthorizePermission(IdentityPermissions.UsersView)]Patrón API:
[Authorize(Policy = "Permission:Identity.Users.View")]El PermissionAuthorizationPolicyProvider crea políticas dinámicamente para permisos y PermissionAuthorizationHandler evalúa si el usuario tiene el claim requerido o wildcard *.
Turnstile
Sección titulada «Turnstile»Turnstile se valida en servidor mediante:
ITurnstileValidatorTurnstileValidatorTurnstileOptionsAuditoría
Sección titulada «Auditoría»Eventos sensibles se registran en:
identity.LoginAuditLogsCampos relevantes:
ClientCodeUserIdEmailEventTypeIpAddressUserAgentIsSuccessfulFailureReasonCreatedAtUtcReglas de seguridad
Sección titulada «Reglas de seguridad»- No hardcodear clientes en código.
- No versionar connection strings productivas, SMTP password ni Turnstile SecretKey.
- No ejecutar seed destructivo fuera de desarrollo.
- No usar LocalDB en IIS.
- Mantener HTTPS obligatorio fuera de local.
- Asignar permisos por claims, no por roles hardcodeados.
- Validar permisos server-side además de ocultar botones.
- Proteger SuperUsuario maestro contra modificación por otros administradores.
Pendientes
Sección titulada «Pendientes»| Pendiente | Prioridad |
|---|---|
| Ocultar botones por permiso específico | Alta |
| Revisar permisos definitivos del rol Administrador | Alta |
| Autenticación admin más robusta para escenarios API externos | Media |
| Auditoría con ActorUserId, TargetUserId y CorrelationId | Media |
| Rotación formal de secretos | Alta |
| Hardening IIS/Cloudflare/WAF para producción | Alta |