Ir al contenido

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.

ControlEstadoObservación
Cookies IdentityImplementadoNombres personalizados AccessPlatform.*.
2FA TOTPImplementadoGoogle Authenticator y recovery codes.
TurnstileImplementado configurableValidación server-side cuando está habilitado.
Password policyImplementadoLargo mínimo 12 y complejidad.
LockoutImplementado5 intentos / 15 minutos por configuración local.
Permisos por claimsImplementadoClaimType permission.
Menú por permisosImplementadoValida UsersView y RolesView.
Acciones server-sideParcial/implementado en servicios de usuariosUserService valida permisos sensibles.
AuditoríaImplementadaidentity.LoginAuditLogs.
HTTPS redirectionImplementadoUseHttpsRedirection().
Secretos externosPendiente producciónDeben salir de variables/vault.

Cookies configuradas:

AccessPlatform.Identity
AccessPlatform.External
AccessPlatform.TwoFactorRememberMe
AccessPlatform.TwoFactorUserId

Criterios:

HttpOnly = true
Secure = Always
SameSite = Lax
SlidingExpiration = true
RolUso
SuperUsuarioAcceso total mediante permiso *.
AdministradorRol administrativo configurable sin permisos implícitos en el seeder actual.
UsuarioRol base sin permisos administrativos.
Identity.Users.View
Identity.Users.Create
Identity.Users.Update
Identity.Users.Activate
Identity.Users.Deactivate
Identity.Users.Delete
Identity.Users.ResetPassword
Identity.Users.ResetTwoFactor
Identity.Roles.View
Identity.Roles.Create
Identity.Roles.Update
Identity.Roles.AssignPermissions
*

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 se valida en servidor mediante:

ITurnstileValidator
TurnstileValidator
TurnstileOptions

Eventos sensibles se registran en:

identity.LoginAuditLogs

Campos relevantes:

ClientCode
UserId
Email
EventType
IpAddress
UserAgent
IsSuccessful
FailureReason
CreatedAtUtc
  • 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.
PendientePrioridad
Ocultar botones por permiso específicoAlta
Revisar permisos definitivos del rol AdministradorAlta
Autenticación admin más robusta para escenarios API externosMedia
Auditoría con ActorUserId, TargetUserId y CorrelationIdMedia
Rotación formal de secretosAlta
Hardening IIS/Cloudflare/WAF para producciónAlta