JWT (JSON Web Token)
Format de token d authentification utilisé par AuraPOS pour la tablette serveur (aurapos-pad) en LAN local.
JWT (JSON Web Token, RFC 7519) est un standard ouvert pour représenter de manière compacte et sécurisée des informations d authentification entre un client et un serveur. Format : `header.payload.signature` encodés en base64url et signés cryptographiquement.
Anatomie d un JWT :
- **Header** : algorithme de signature (typiquement HS256 ou RS256)
- **Payload** : claims utilisateur (id, nom, rôle, expiration) en JSON
- **Signature** : HMAC-SHA256 ou RSA-SHA256 du header + payload avec un secret partagé
AuraPOS utilise JWT pour deux contextes :
1. Tablette serveur HORECA (aurapos-pad)
Après login PIN du serveur, AuraPOS génère un JWT signé HS256 avec serveur_id, nom, roles, exp 12h. Le JWT est stocké dans le local storage de la tablette (chiffré par tauri-plugin-store). Toutes les requêtes API ultérieures portent le JWT dans `Authorization: Bearer xxx`. Le serveur Kestrel AuraPOS vérifie la signature à chaque requête.
2. Sessions web backend (mon.aurapos.be)
Utilise NextAuth v5 avec session cookies sécurisés (httpOnly, sameSite, secure).
Avantages JWT :
- **Sans état (stateless)** : le serveur n a rien à stocker
- **Portable** entre services
- **Facile à inspecter** : tout développeur peut décoder le payload sur jwt.io
- **Standard universel** : OAuth2 / OpenID Connect utilisent JWT
Inconvénients :
- **Non-révocable** jusqu à expiration. Mitigation : durée courte (12 h) + re-login quotidien.
- **Taille** : 200-500 octets, plus lourd qu un cookie de session simple
- **Secret à protéger** : si le secret HS256 fuite, n importe qui peut forger des JWT valides. Mitigation : rotation périodique, stockage en variable d environnement chiffrée.
AuraPOS gère tout cela automatiquement — vous n avez pas à manipuler les JWT directement.