Backend (Rust / Axum)
Le backend d'un module est un service Axum (Rust 2021) adossé à PostgreSQL via SQLx. Quelques règles impératives garantissent qualité et sécurité.
Le bootstrap (main.rs) #
// 1. Charger la config (variables KC__… ou config.toml)
// 2. Créer le pool PgPool et lancer les migrations (schéma du module)
// 3. Construire le routeur Axum
// 4. S'enregistrer auprès du core (/internal/modules/…) avec X-Internal-Secret
// 5. Boucler le heartbeat ; se désenregistrer à l'arrêtRègles de qualité #
- Zéro
unwrap()hors tests — utilisez?ouexpect()au seul bootstrap. - Toute erreur DB loggée (
tracing::error!) avant retour ; validez les entrées avant toute opération DB. - Transactions atomiques pour le multi-tables.
- Schéma
<module>uniquement — aucune table hors de votre schéma. cargo clippy -- -D warningsdoit passer.
Authentification reçue du core #
Le module ne valide pas lui-même les JWT. Le core authentifie la requête, puis la proxifie en injectant l'identité dans les en-têtes — votre middleware n'a qu'à vérifier le secret interne et lire l'utilisateur :
X-Internal-Secret : <secret partagé> # remplace l'Authorization
X-Kubuno-User-Id : <uuid>
X-Kubuno-User-Role: user | admin
X-Kubuno-User-Email: <email>Sécurité des routes #
- Jamais de mot de passe ni de refresh token dans les logs ou le JSON.
- Routes publiques : pas de fuite d'information (ne distinguez pas « email inexistant » de « mauvais mot de passe »).
/internal/*refuse toute requête sansX-Internal-Secretvalide.