Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrInvalidHash se retorna cuando un hash (Argon2, Bcrypt, etc.) no cumple // con la estructura PHC o está corrupto. ErrInvalidHash = errors.New("el hash provisto no tiene un formato válido") // ErrIncompatibleVersion se retorna cuando el algoritmo o la versión del // hash no es compatible con la configuración actual del sistema. ErrIncompatibleVersion = errors.New("versión o algoritmo inalcanzable") // ErrInvalidCiphertext se retorna cuando el payload cifrado (AES-GCM) no se // puede autenticar o descifrar debido a corrupción o clave errónea. ErrInvalidCiphertext = errors.New("el texto cifrado no es válido o está corrupto") // ErrInvalidKeyLength se retorna cuando una clave secreta no cumple // con los requerimientos de tamaño del algoritmo (ej. AES-256 requiere 32 bytes). ErrInvalidKeyLength = errors.New("longitud de clave no válida") // ErrAuthenticationFailed se retorna cuando las credenciales son inválidas. // NO especifica si el usuario no existe o la contraseña es incorrecta. // Esto previene ataques de enumeración de usuarios. ErrAuthenticationFailed = errors.New("credenciales inválidas") // ErrPermissionDenied se retorna cuando el usuario autenticado no tiene // permisos para realizar la operación solicitada. ErrPermissionDenied = errors.New("permiso denegado") // ErrInsufficientSecurityLevel se retorna cuando una operación requiere // un nivel de seguridad mayor al configurado (ej. 2FA requerido). ErrInsufficientSecurityLevel = errors.New("nivel de seguridad insuficiente para esta operación") // ErrTokenInvalid se retorna cuando un token está mal formado, expirado, // ha sido revocado o no corresponde al usuario. No revela qué tipo de // token era ni por qué falló específicamente. ErrTokenInvalid = errors.New("token inválido o expirado") // ErrTokenRevoked se retorna cuando un token fue revocado explícitamente // (ej. logout, cambio de contraseña, reporte de robo). ErrTokenRevoked = errors.New("token revocado") // ErrSessionExpired se retorna cuando una sesión ha expirado por inactividad // o por alcanzar su tiempo máximo de vida. ErrSessionExpired = errors.New("sesión expirada") // ErrRateLimitExceeded se retorna cuando se superan los intentos permitidos // en un período de tiempo determinado (login, reset de contraseña, etc.). // No revela cuántos intentos quedan ni el tiempo exacto de bloqueo. ErrRateLimitExceeded = errors.New("demasiados intentos, inténtelo más tarde") // ErrAccountLocked se retorna cuando una cuenta ha sido bloqueada debido // a múltiples intentos fallidos o por acción administrativa. ErrAccountLocked = errors.New("cuenta bloqueada temporalmente") // ErrIPBlocked se retorna cuando una dirección IP ha sido bloqueada // por actividad sospechosa o múltiples intentos fallidos. ErrIPBlocked = errors.New("dirección IP bloqueada temporalmente") // ErrInvalidInput se retorna cuando los datos de entrada no cumplen // con las políticas de validación (contraseña débil, email mal formado, etc.). // No especifica qué regla falló para no dar pistas a atacantes. ErrInvalidInput = errors.New("datos de entrada no válidos") // ErrWeakPassword se retorna cuando una contraseña no cumple con las // políticas de fortaleza configuradas (longitud, complejidad, etc.). ErrWeakPassword = errors.New("la contraseña no cumple los requisitos de seguridad") // ErrOperationNotAllowed se retorna cuando una operación no está permitida // en el estado actual (ej. cambiar contraseña durante bloqueo). ErrOperationNotAllowed = errors.New("operación no permitida en este momento") // ErrPasswordChangeRequired se retorna cuando el sistema requiere que el // usuario cambie su contraseña (ej. expiración, compromiso detectado). ErrPasswordChangeRequired = errors.New("se requiere cambiar la contraseña") )
Functions ¶
This section is empty.
Types ¶
type Level ¶
type Level uint8
Level representa el nivel de rigor en las políticas de seguridad aplicadas. Cada nivel ajusta automáticamente los valores predeterminados de hashing, expiración de tokens, límites de intentos y restricciones de sesión.
PRINCIPIO DE DISEÑO: "Seguridad por defecto". Si el usuario no configura nada, LevelMedium se aplica automáticamente, garantizando un baseline seguro.
const ( // LevelDefault es el valor cero: cuando SecurityLevel no se configura // explícitamente, GetDefaults() aplica los parámetros de LevelMedium. LevelDefault Level = iota // LevelLow: Para entornos de desarrollo o aplicaciones internas de bajo riesgo. // Hashing rápido (bcrypt cost 10), tokens de larga duración (24h), // límites permisivos. NO usar en producción con datos sensibles. LevelLow // LevelMedium: Para aplicaciones estándar de producción (recomendado por defecto). // Equilibrio entre seguridad y rendimiento. Bcrypt cost 12, JWT 1h, // 5 intentos de login antes de bloqueo. LevelMedium // LevelHigh: Para aplicaciones que manejan datos sensibles (PII, finanzas, salud). // Hashing robusto (bcrypt cost 14), tokens de corta duración (15min), // rotación obligatoria de refresh tokens, 3 intentos antes de bloqueo. LevelHigh // LevelCritical: Para infraestructura crítica, banca, gobierno o sistemas // con requerimientos regulatorios estrictos. Bcrypt cost 15 (o Argon2), // JWT de 5min, 2FA obligatorio, bloqueo de 24h tras 3 intentos. LevelCritical )
func (Level) GetDefaults ¶
func (l Level) GetDefaults() SecurityDefaults
GetDefaults devuelve la configuración segura predeterminada para un nivel dado. Si el nivel no es válido, retorna LevelMedium como fallback seguro.
Ejemplo de uso:
defaults := security.LevelHigh.GetDefaults() fmt.Println(defaults.BcryptCost) // 14 fmt.Println(defaults.AccessTokenDuration) // 15m0s
type SecurityDefaults ¶
type SecurityDefaults struct {
// Hashing de contraseñas
BcryptCost int // Costo computacional (10-15). Mayor = más seguro pero más lento.
// Tokens
AccessTokenDuration time.Duration // Validez del token de acceso principal
RefreshTokenDuration time.Duration // Validez del token de renovación
// Rate limiting y protección contra fuerza bruta
MaxLoginAttempts int // Intentos máximos antes de bloqueo
LockoutDuration time.Duration // Tiempo de bloqueo tras superar intentos
PasswordResetMaxPerHour int // Máximo de resets de contraseña por hora
// Sesiones
MaxConcurrentSessions int // Máximo de sesiones activas por usuario
SessionTimeout time.Duration // Tiempo máximo absoluto de sesión
IdleTimeout time.Duration // Tiempo de inactividad antes de cerrar sesión
// 2FA / MFA
Require2FA bool // Si true, 2FA es obligatorio para todos los usuarios
}
SecurityDefaults define los parámetros base para cada nivel de seguridad. Estos valores son el resultado de auditorías de seguridad y recomendaciones de OWASP, NIST y otros estándares de la industria.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package middleware provee middlewares HTTP reutilizables para el ecosistema GoKit: autenticación JWT, autorización por rol, verificación de sesión activa, limitación de tasa (rate limiting), CORS y logging de peticiones.
|
Package middleware provee middlewares HTTP reutilizables para el ecosistema GoKit: autenticación JWT, autorización por rol, verificación de sesión activa, limitación de tasa (rate limiting), CORS y logging de peticiones. |