WartID
WartID est un serveur OAuth2 qui devrait permettre d'avoir une authentification unique sur plusieurs Warta-services (a.k.a. WartApps). En pratique, seul WartaMD le supporte à l'heure actuelle. Un peu con pour un single-sign-on.
Pile technologique
- Front-ends : Web/HTTP et un bot Discord
- Protocoles de haut niveau : OAuth2, OIDC, JWT
- Pile technologique principale :
rocket
,diesel
,ructe
etserenity
- Autres choses notables dont on dépend :
xp.css
,postgresql
Fonctionnalités
OAuth2 est un protocole d'autorisation, pas d'authentification. C'est donc un choix de merde pour implémenter du "simple" SSO, où CAS (le truc utilisé par la page de connexion Agalan à l'UGA) aurait fait l'affaire probablement beaucoup plus simplement, et avec un bien meilleur support du côté des services pas codés par nous (i.e. les WartaMails). Il aurait été possible d'implémenter plusieurs protocoles dans WartID mais flemme hein. La raison du choix d'OAuth2 est liée au carnet de produit original où l'aspect "autorisation" aurait été justifié.
Carnet de produit original :
- Implémenter OAuth2
- Permettre aux WartApps de stocker des données structurées custom sur la BDD de WartID, associés à des utilisateurs, pour pouvoir créer des services interactifs à moindre complexité
- Système de déploiement de sites statiques (avec authentification possible)
- Système de déploiement de flakes Nix
- Bases de données SQL managées créées sur demande pour les WartApps
- Un système d'avatars centralisés à la Gravatar/Libravatar
- Une bibliothèque cliente OAuth2 pour Rust/rocket
- Un compteur live de l'âge de Johan sur la page de connexion
- Upload des clés SSH perso pour accéder au WartaVPS
Ce qui a été fait en pratique :
- Implémenter OAuth2 ✅
- Des bagarres avec la CI
- 99% de downtime
- Une base de données perdue