L'authentification est le processus de vérification de l'identité de l'utilisateur. Dans les applications, c'est la porte d'entrée vers l'expérience. Une authentification mal mise en œuvre compromet la sécurité et frustre les utilisateurs. Ce guide présente les méthodes, protocoles et bonnes pratiques pour mettre en œuvre une authentification sécurisée et conviviale.
Qu'est-ce que l'authentification
L'authentification répond à la question « Qui êtes-vous ? » C'est différent de l'autorisation, qui répond : « Que pouvez-vous faire ? L'utilisateur prouve son identité, généralement avec quelque chose qu'il connaît (mot de passe), quelque chose qu'il possède (téléphone) ou quelque chose qu'il est (données biométriques).
Importance de l'authentification
Sans authentification appropriée, n'importe qui peut accéder aux données privées. Des fuites, des fraudes et des abus sont possibles. La réputation des produits et la confiance des utilisateurs sont en jeu.
Méthodes d'authentification
Nom d'utilisateur et mot de passe
Méthode traditionnelle. Simple à mettre en œuvre, mais vulnérable aux attaques si les mots de passe sont faibles ou mal stockés.
Connexion sociale
Connectez-vous via Google, Apple, Facebook. Rapide pour l'utilisateur, délègue la sécurité à des fournisseurs de confiance. Réduit la friction lors de l'enregistrement.
Lien magique
Lien envoyé par email qui s'authentifie lorsqu'on clique dessus. Élimine le mot de passe, mais dépend de l'accès au courrier électronique.
OTP (mot de passe à usage unique)
Code envoyé par SMS ou email. Valable pour une courte période. Commun comme deuxième facteur.
Biométrie
Empreinte digitale, identification faciale. Confort maximal sur les appareils qui le prennent en charge. Stockage local et non partagé.
Clés d'accès
Nouvelle norme qui élimine les mots de passe. Utilise la cryptographie à clé publique. Apple, Google et Microsoft le prennent en charge.
Protocoles et normes
OAuth 2.0
Par défaut pour l’autorisation déléguée. Permet aux applications d'accéder aux ressources sans recevoir de mot de passe. Base de connexion sociale.
OpenID Connect
Couche d'identité sur OAuth 2.0. Ajoute l'authentification au flux d'autorisation.
###SAML
Norme d'entreprise pour SSO. Basé sur XML. Courant dans les environnements d’entreprise.
JWT (jeton Web JSON)
Jeton portant des revendications signées. Apatride, vérifiable par le serveur sans consulter la base de données.
Flux d'authentification typique
- L'utilisateur fournit ses informations d'identification.
- Le serveur valide et génère un jeton.
- Le jeton est stocké sur l'appareil.
- Les demandes incluent un jeton dans l'en-tête.
- Le serveur valide le jeton et autorise l'accès.
Jetons : accès et actualisation
Jeton d'accès
Jeton de courte durée pour accéder aux API. Expire rapidement (de quelques minutes à quelques heures).
Actualiser le jeton
Jeton de longue durée pour obtenir de nouveaux jetons d'accès. Stocké en toute sécurité. Permet de longues sessions sans réauthentification.
Rotation des jetons
Le jeton d'actualisation génère un nouveau jeton d'actualisation à chaque utilisation. Si l’un d’entre eux est compromis, il est invalidé lors de la rotation suivante.
Stockage sécurisé
Trousseau iOS
API native de stockage de données sensibles. Chiffré par le système. À utiliser pour les jetons et les informations d'identification.
Magasin de clés Android
Similaire au porte-clés. Stocke les clés cryptographiques avec protection matérielle lorsqu’elles sont disponibles.
Préférences partagées cryptées
Pour Android, alternative plus simple. Chiffre les données dans SharedPreferences.
Jamais en texte brut
Ne stockez pas de jetons dans des fichiers locaux, des journaux ou du code. Les attaquants peuvent facilement l’extraire.
Authentification multifacteur (MFA)
Qu'est-ce que c'est
Nécessite plusieurs facteurs pour s’authentifier. Quelque chose que vous connaissez + quelque chose que vous avez, par exemple.
Pourquoi utiliser
Même si le mot de passe est compromis, l’attaquant a besoin du deuxième facteur. Augmente considérablement la sécurité.
Implémentations courantes
- SMS OTP (moins sécurisé, vulnérable à l'échange de carte SIM).
- TOTP via l'application d'authentification (Google Authenticator, Authy).
- Notification push pour approuver la connexion.
- La biométrie comme deuxième facteur.
Sécurité de connexion
Limitation du débit
Limitez les tentatives de connexion. Empêche la force brute.
Verrouillage du compte
Bloque le compte après plusieurs échecs. Se combine avec une limitation de débit.
CAPTCHA
Différencie les humains des robots. Ajoute de la friction, à utiliser avec parcimonie.
Détection d'anomalies
Identifiez les connexions suspectes : nouvel emplacement, nouvel appareil, heure inhabituelle. Exiger une vérification supplémentaire.
Expérience utilisateur
Minimiser les frictions
Plus il y a de pas, plus il y a d'abandon. La connexion sociale et la biométrie réduisent les frictions.
Rappeler à l'utilisateur
Les longues sessions empêchent les réauthentifications fréquentes. Utilisez des jetons d'actualisation.
Effacer les commentaires
Messages d'erreur spécifiques (pour des raisons de sécurité). "E-mail ou mot de passe incorrect" vaut mieux que "Erreur d'authentification".
Récupération de compte
Effacer le flux pour la réinitialisation du mot de passe. Email, SMS ou questions de sécurité.
Connexion sociale : avantages et inconvénients
Avantages
- Inscription rapide, moins de champs.
- L'utilisateur ne crée plus de mot de passe.
- Les prestataires veillent à la sécurité.
Inconvénients
- Dépendance à l'égard de tiers.
- L'utilisateur peut avoir des problèmes de confidentialité.
- Si le fournisseur tombe en panne, la connexion devient indisponible.
Bonnes pratiques
Options d'offre : sociale + traditionnelle. Autoriser la liaison de plusieurs méthodes. Ne forcez pas la connexion sociale.
Connectez-vous avec Apple
Obligatoire
Si l'application propose une connexion sociale, Apple exige qu'elle propose la connexion avec Apple. Règle de l'App Store.
Masquer mon e-mail
L'utilisateur peut masquer le vrai courrier électronique. L'application reçoit l'adresse de relais d'Apple.
Implémentation
Utilisez le cadre AuthenticationServices. Flux similaire à OAuth.
Clés d'accès : l'avenir
Comment ils fonctionnent
Paire de clés publique/privée. La clé privée reste sur l'appareil, jamais transmise. Authentification par défi cryptographique.
Avantages
- Résistant au phishing.
- Il n'y a aucun mot de passe à divulguer.
- Synchroniser entre les appareils des utilisateurs.
Adoption
Apple, Google et Microsoft le prennent en charge. Norme FIDO2/WebAuthn. Adoption croissante.
Session et déconnexion
Gestion des sessions
Suivez les sessions actives. Autoriser l'utilisateur à consulter et à révoquer.
Déconnexion sécurisée
Invalidez les jetons sur le serveur. Effacez les données sensibles de l’appareil.
Délai d'inactivité
Déconnectez-vous après une période de non-utilisation. Équilibrez sécurité et commodité.
Erreurs courantes
Mots de passe en texte brut
Ne stockez jamais les mots de passe sans hachage. Utilisez bcrypt, scrypt ou Argon2.
Aucun jeton d'expiration
Les jetons éternels représentent un risque. Définissez toujours l’expiration.
Validation client uniquement
Toute validation doit avoir lieu sur le serveur. Le client peut être manipulé.
Messages d'erreur révélateurs
"L'utilisateur n'existe pas" vs "E-mail non enregistré" révèlent des informations. Soyez générique.
Conclusion
L'authentification sécurisée équilibre la protection et l'expérience utilisateur. Utilisez des protocoles établis, implémentez la MFA, stockez correctement les jetons et minimisez les frictions. Les clés d’accès représentent l’avenir, mais les mots de passe règnent toujours. Construisez pour la réalité d’aujourd’hui tout en vous préparant à l’évolution.
##FAQ
1) JWT est-il sûr ? Oui, si mis en œuvre correctement. Utilisez HTTPS, validez l'abonnement, définissez une expiration courte.
2) Dois-je proposer une connexion par SMS ? Comme deuxième facteur, c’est mieux que rien. Mais l'authentificateur TOTP est plus sécurisé que le SMS.
3) La connexion avec Apple est-elle obligatoire ? Si vous proposez une connexion sociale, oui. C'est la règle de l'App Store.
4) Combien de temps doit durer un jeton d'accès ? Cela dépend du contexte. 15 à 60 minutes sont courantes. Les jetons d'actualisation renouvellent la session.
5) La biométrie est-elle sûre pour l'authentification ? Oui. Les données biométriques restent sur l'appareil et ne sont jamais transmises. C'est la commodité avec la sécurité.
A lire aussi
- Authentification dans les applications - Bonnes pratiques avec liste de contrôle
- Connexion sociale dans les applications : mise en œuvre et meilleures pratiques
- Le social login en pratique : la roadmap de décision avant de l'implémenter dans votre application
- Sécurité des applications : Guide de protection mobile -Authentification dans les applications - Meilleures pratiques avec exemples
- Développement natif Android : Guide complet avec Kotlin
