Autenticación JWT
JWT (JSON Web Token) es un estándar abierto (RFC 7519) para transmitir información de forma segura entre partes. Es un método compacto y seguro para URL que representa afirmaciones en formato de objeto JSON, comúnmente utilizado para autenticación e intercambio de información.
Un JWT consta de tres partes:
- Encabezado - Especifica el tipo de token y el algoritmo de firma utilizado
- Carga útil - Contiene las afirmaciones, como ID de usuario, roles, tiempo de expiración, etc.
- Firma - Se utiliza para verificar que el mensaje no fue alterado durante la transmisión
Uso típico de JWT en el flujo de autenticación:
- Después del inicio de sesión del usuario, el servidor genera un token JWT
- El token se devuelve al cliente y se almacena (normalmente en localStorage o cookies)
- En solicitudes posteriores, el cliente incluye este token en el encabezado de Autorización
- El servidor valida la autenticidad del token y concede acceso
Proporciona middleware para autenticación JWT Auth.
Elegir un proveedor criptográfico
Salvo 0.95 ofrece dos features JWT alternativas:
jwt-authutiliza el proveedor AWS-LC.jwt-auth-ringutiliza el proveedor RustCrypto.
En compilaciones normales, active solo una. La feature independiente ring
selecciona ring para la integración rustls de Salvo y no activa la autenticación
JWT. El siguiente ejemplo utiliza jwt-auth. Para utilizar RustCrypto:
Si la unificación de features de Cargo activa ambos proveedores JWT, llame a
salvo::jwt_auth::install_crypto_provider() al principio de main, antes de
cualquier operación directa de jsonwebtoken o de configurar el middleware
JWT. El ejemplo siguiente lo hace para que la selección sea determinista.
Código de Ejemplo