đ 2.5 Authentification et gestion des utilisateurs
Module 335 â RĂ©aliser une application pour mobile
đŻ Objectif d'apprentissage
Ă la fin de ce chapitre, vous serez capables de :
- Comprendre les principes de base de l'authentification (identité, session, tokens)
- Identifier les différences entre authentification, autorisation et gestion des utilisateurs
- Expliquer le fonctionnement des tokens JWT, des sessions, et du stockage sécurisé
- Connaßtre les solutions modernes adaptées au mobile (Supabase Auth, Firebase Auth, Auth0, etc.)
- Gérer la persistance de connexion dans un contexte mobile offline-first
đ€ 2.5.1 Introduction : pourquoi identifier ?
Dans une application mobile moderne, lâauthentification permet de reconnaĂźtre un utilisateur et de lui offrir une expĂ©rience personnalisĂ©e.
Sans authentification, toutes les fonctionnalitĂ©s doivent ĂȘtre accessibles Ă nâimporte qui, sans distinction â ce qui est rarement souhaitĂ©.
2.5.1 Pourquoi identifier ?
Pour :
-
Afficher des données personnelles
â messages, notes, favoris, historique -
Protéger certaines fonctionnalités
â commandes, paiement, configuration -
Synchroniser les données entre plusieurs appareils (cloud)
-
AmĂ©liorer lâexpĂ©rience utilisateur
â retrouver profil, thĂšme, prĂ©fĂ©rences
đ Sur mobile, un dĂ©fi supplĂ©mentaire :
lâutilisateur sâattend Ă rester connectĂ©, mĂȘme si lâapp est fermĂ©e plusieurs jours.
2.5.1 Authentification vs Autorisation
Ces notions sont souvent confondues :
-
Authentification
= vĂ©rifier lâidentitĂ© de lâutilisateurâĂtes-vous bien Thomas ?â
-
Autorisation
= vĂ©rifier les droits dâaccĂšsâThomas peut-il modifier ce document ?â
2.5.1 Gestion des utilisateurs
La gestion des utilisateurs englobe :
- création de compte
- connexion / déconnexion
- changement de mot de passe
- email de vérification
- gestion des rĂŽles
- suppression de comptes
đĄ Exemple concret :
Une application de notes affiche uniquement les notes du compte connecté :
impossible dâaccĂ©der Ă celles dâun autre utilisateur.
đ 2.5.2 Les mĂ©thodes dâauthentification modernes
Les applications mobiles supportent plusieurs mĂ©thodes dâauthentification.
Chaque méthode a ses usages, ses avantages et son niveau de sécurité.
2.5.2 â Email + mot de passe
La méthode la plus courante.
Fonctionnement :
- Lâutilisateur saisit email + mot de passe
- Lâapp envoie la requĂȘte de connexion au serveur
- Si les identifiants sont valides, le serveur renvoie un token de session
- Lâapp stocke ce token en local (Preferences / SecureStorage)
â Avantages : simple, trĂšs rĂ©pandu
â InconvĂ©nients : nĂ©cessite une bonne gestion des mots de passe (hash, politique de sĂ©curitĂ©âŠ)
2.5.2 ⥠Magic Link
Méthode moderne, utilisée par Slack, Notion, etc.
Fonctionnement :
- Lâutilisateur saisit son email
- Il reçoit un email avec un lien unique
- Cliquer sur ce lien le connecte automatiquement
â Avantages : pas de mot de passe Ă retenir, expĂ©rience fluide
â InconvĂ©nients : dĂ©pend entiĂšrement de lâemail, moins adaptĂ© Ă certains contextes âbusinessâ
2.5.2 âą Social Login (OAuth)
Connexion via :
- Apple
- GitHub
- âŠ
â Avantages :
- connexion ultra-rapide
- sécurité forte gérée par le fournisseur
â InconvĂ©nients :
- dépendance à un acteur externe
- parfois rejeté dans les environnements sensibles (écoles, entreprises)
âčïž Cas particulier iOS
Apple oblige parfois Ă proposer âSign in with Appleâ si dâautres logins sociaux sont inclus.
2.5.2 ⣠Biométrie (Face ID / Touch ID)
Utilisée pour déverrouiller un compte déjà connecté.
Ce nâest pas une authentification cloud, mais un verrou local.
â Avantages : trĂšs rapide, fluide pour lâutilisateur
â InconvĂ©nients : doit ĂȘtre couplĂ© Ă un compte dĂ©jĂ connectĂ© (et Ă une auth serveur classique)
2.5.2 †Sessions avec tokens (JWT)
La majoritĂ© des apps mobiles utilisent aujourdâhui des tokens JWT (JSON Web Token), reçus aprĂšs la connexion.
Authorization: Bearer <token>
- Le token encode des informations (id utilisateur, expiration, etc.)
- Il doit ĂȘtre stockĂ© localement et renvoyĂ© Ă chaque requĂȘte
- Un refresh token permet de prolonger la session de maniÚre sécurisée
â demander un nouveau token dâaccĂšs sans ressaisir les identifiants
âčïž Cette approche est au cĆur de Supabase Auth, Firebase Auth, Auth0, etc.
đĄïž 2.5.3 Stockage sĂ©curisĂ© des sessions
Une application mobile doit pouvoir mĂ©moriser la session dâun utilisateur mĂȘme lorsque lâapp est fermĂ©e.
Ce stockage doit ĂȘtre :
- persistant
- sécurisé
2.5.3 OĂč stocker un token ?
| Environnement | Solution | Sécurité |
|---|---|---|
| Ionic / Capacitor |
SecureStorage ou Preferences
|
đ ChiffrĂ© (SecureStorage) |
| Flutter | flutter_secure_storage |
đ ChiffrĂ© |
| Android natif | Keystore | đ TrĂšs sĂ©curisĂ© |
| iOS natif | Keychain | đ TrĂšs sĂ©curisĂ© |
đŹ Recommandation :
Toujours préférer un stockage sécurisé pour les tokens (access + refresh).
2.5.3 Bonnes pratiques â Sessions
- Ne jamais stocker de mot de passe en clair
- Utiliser un systĂšme de rotation (access token + refresh token)
- VĂ©rifier lâexpiration du token au lancement de lâapp
- Token invalide â redirection vers lâĂ©cran de connexion
- Hors ligne â autoriser lâaccĂšs aux donnĂ©es locales tant que la session reste valide
đĄ Exemple concret :
Supabase gĂšre automatiquement la persistance de session,
mais lâapp doit stocker les tokens pour pouvoir fonctionner hors ligne (au moins en lecture).
đ„ž 2.5.4 Solutions modernes dâauthentification
La plupart des apps modernes ne recodent pas leur propre auth.
Elles utilisent des services spécialisés (BaaS ou Identity Providers).
2.5.4 Supabase Auth
- EntiĂšrement open-source
- Basé sur PostgreSQL + JWT
- Supporte : magic links, passwords, OAuth
- Plugins officiels pour Capacitor, Flutter, React NativeâŠ
- Gestion automatique des :
- sessions
- tokens
- expiration
- Compatible offline (via stockage local)
đ TrĂšs bon choix pĂ©dagogique et pro pour projets modernes.
2.5.4 Firebase Auth
- Proposé par Google
- TrĂšs simple Ă prendre en main
- Supporte :
- Social login
- Email / mot de passe
- Phone auth (OTP via SMS)
- SDK mobile trĂšs solide
- Gestion de base des utilisateurs (password reset, email verificationâŠ)
đ Parfait pour un premier projet mobile.
2.5.4 Auth0 (niveau entreprise)
- Spécialisé en Identity & Access Management
- TrĂšs complet :
- SSO
- OAuth2
- permissions avancées
- Idéal pour des environnements professionnels complexes
- Intégration plus lourde, mais trÚs robuste
đ Choix privilĂ©giĂ© dans les grandes entreprises.
2.5.4 Comparatif synthétique
| Solution | Simplicité | Mode offline | Coût | Idéal pour |
|---|---|---|---|---|
| Supabase | ââââ | ââââ | đ°đ° | App moderne avec base SQL |
| Firebase | âââââ | ââ | đ° | Premiers projets, apps simples |
| Auth0 | âââ | â | đ°đ°đ° | Entreprises, SSO, projets pro |
đČ 2.5.5 Authentification en mobile offline-first
Sur mobile, lâexpĂ©rience dĂ©pend fortement de la qualitĂ© de la connexion.
Les coupures sont normales :
- tunnels, ascenseur, trains
- parkings, zones rurales
- salles surchargĂ©es (ex. Aula du BannĂ© đ)
2.5.5 Objectifs dâune bonne app mobile
Une bonne app doit :
- Continuer Ă fonctionner hors ligne
- Maintenir la session le plus longtemps possible
- Se reconnecter automatiquement quand le réseau revient
2.5.5 Objectifs dâune bonne app mobile
Contraintes :
- Session active mĂȘme si lâapp est fermĂ©e plusieurs jours
- Perte de rĂ©seau â dĂ©connexion
- Données locales toujours consultables
- Token expirĂ© â tentative de refresh automatique
đĄ Exemple concret :
Une app de notes doit rester utilisable offline, y compris pour consulter ou créer des notes, tant que la session locale est considérée comme valide.
đȘ 2.5.6 StratĂ©gies robustes pour lâauth mobile
Exemple de stratĂ©gie dâauth robuste pour une app mobile moderne :
2.5.6 Ătape 1 â VĂ©rification de session au dĂ©marrage
đŠ 1. VĂ©rification de session au dĂ©marrage
Au lancement de lâapp :
- lâapp vĂ©rifie sâil existe un token valide en local
- si oui â lâutilisateur reste connectĂ©
- sinon â redirection vers lâĂ©cran de connexion
2.5.6 Ătape 2 â RafraĂźchissement automatique
đ§ 2. RafraĂźchissement automatique du token
Les tokens JWT expirent (ex. aprĂšs 1 heure).
Un refresh token permet de redemander un access token sans ressaisir le mot de passe.
Flux typique :
- Lâapp utilise le token â lâAPI rĂ©pond
401 Unauthorized - Lâapp tente un refresh en arriĂšre-plan
- Si le refresh rĂ©ussit â nouvelle session transparente pour lâutilisateur
- Si le refresh Ă©choue â dĂ©connexion
2.5.6 Ătape 3 â Stockage sĂ©curisĂ©
đ© 3. Stockage sĂ©curisĂ© du token
Les tokens doivent ĂȘtre stockĂ©s via :
- Capacitor
SecureStorage - iOS Keychain
- Android Keystore
- Flutter
flutter_secure_storage
đ Ne jamais stocker un token dans
localStoragecÎté web :
risque dâaccĂšs via JavaScript (XSS).
2.5.6 Ătapes 4 & 5 â Offline & dĂ©connexion
đ§ 4. ContinuitĂ© hors ligne
Si lâutilisateur est hors ligne :
- lâapp doit continuer Ă fonctionner sur les donnĂ©es locales (voir chapitre 2.4)
- les actions sont mises en file dâattente
- la synchronisation se fait quand le réseau revient
đ„ 5. DĂ©connexion âgracieuseâ
Si un token expire et que le refresh échoue (ex. mot de passe changé ailleurs) :
- nettoyage complet de la session stockée
- redirection vers la page de connexion
- message clair :
âVotre session a expirĂ©, veuillez vous reconnecter.â
2.5.6 En résumé
đ Ă retenir
Une application mobile doit maintenir une session :
- stable
- sécurisée
- résistante aux interruptions réseau
Les BaaS modernes (Supabase, Firebase, etc.)
simplifient énormément cette logique.
𧩠2.5.7 Activités pédagogiques
đ§Ș Exercice 1 â Comparer les mĂ©thodes de connexion
Objectif : comprendre les avantages / limites des différentes méthodes.
âĄïž Comparez mot de passe, OAuth et Magic Link.
âĄïž Classez-les selon :
- sécurité
- rapidité
- expérience utilisateur
- facilitĂ© dâintĂ©gration
đŹ Discussion : faut-il obliger les logins sociaux ?
2.5.7 ActivitĂ© â Stockage de session
đïž Exercice 2 â OĂč stocker le token ?
Trois scénarios :
- Token stocké dans
Preferences - Token stocké dans
SecureStorage - Token stocké dans une base SQLite
âĄïž Classez ces solutions du moins sĂ©curisĂ© au plus sĂ©curisĂ© et justifiez.
âĄïž Expliquez pourquoi certaines solutions ne conviennent pas pour des tokens sensibles.
2.5.7 ActivitĂ© â Workflow dâauthentification
đ Exercice 3 â SchĂ©ma dâauth mobile
Réalisez un schéma complet du flux :
- Lâutilisateur saisit email + mot de passe
- Lâapp envoie la requĂȘte Ă un service Auth
- Le serveur renvoie un JWT + refresh token
- Lâapp stocke les tokens localement
- Lâutilisateur accĂšde Ă lâapp
- Lors dâun appel API â ajout du header
Authorization: Bearer <token> - Token expirĂ© â tentative de refresh
- Ăchec â dĂ©connexion propre
đŹ Cet exercice prĂ©pare directement la section 2.6 (Supabase / Firebase).
đ 2.5.8 RĂ©fĂ©rences et ressources
-
Supabase Auth
https://supabase.com/docs/guides/auth -
Firebase Authentication
https://firebase.google.com/docs/auth -
Auth0 â Identity Platform
https://auth0.com/docs -
OpenID & OAuth 2.0
https://oauth.net/ -
JWT (JSON Web Tokens)
https://jwt.io -
OWASP Mobile Application Security
https://owasp.org/www-project-mobile-security/
đ 2.5 Authentification et gestion des utilisateurs
By tirtho
đ 2.5 Authentification et gestion des utilisateurs
- 76