Pour commencer
Créer un projet Flutter
Créez un nouveau projet Flutter pour ce guide de démarrage rapide.Dans votre terminal :
- Accédez à votre répertoire de travail
- Exécutez :
flutter create auth0_flutter_sample - Accédez au répertoire du projet :
cd auth0_flutter_sample - Ouvrez-le dans votre IDE :
- VS Code :
code . - Android Studio :
open -a "Android Studio" .
- VS Code :
Installez le SDK Auth0 pour Flutter
Ajoutez le SDK Auth0 pour Flutter à votre projet à l’aide de l’interface de ligne de commande Flutter.Cela ajoutera
auth0_flutter aux dépendances de votre pubspec.yaml :pubspec.yaml
Configurez votre application Auth0
Ensuite, vous devez créer une nouvelle application dans votre locataire Auth0 et configurer les URL de rappel.Allowed Logout URLs:Ajoutez au champ Allowed Logout URLs les mêmes URL que celles configurées ci-dessus pour les URL de rappel.Allowed Web Origins (Web Only):Si vous ciblez le Web, ajoutez l’URL de votre application :
- Accédez au Auth0 Dashboard
- Cliquez sur Applications > Applications > Create Application
- Dans la fenêtre contextuelle, entrez un nom pour votre application, sélectionnez
Nativecomme type d’application (ouSingle Page Applicationpour le Web uniquement), puis cliquez sur Create - Allez à l’onglet Settings dans la page des détails de l’application
- Notez les valeurs Domaine et ID client — vous en aurez besoin plus tard
- Android
- iOS
- macOS
- Web
Allowed Callback URLs sont une mesure de sécurité essentielle pour garantir que les utilisateurs sont redirigés de façon sécuritaire vers votre application après l’authentification. Sans URL correspondante, le processus de connexion échouera.Allowed Logout URLs sont essentielles pour offrir une expérience utilisateur fluide lors de la déconnexion. Sans URL correspondante, les utilisateurs ne seront pas redirigés vers votre application après la déconnexion.Par exemple, si votre domaine Auth0 est
example.us.auth0.com et que le nom de votre package Android est com.example.myapp, votre URL de rappel Android serait : https://example.us.auth0.com/android/com.example.myapp/callbackConfigurez votre application
Une configuration propre à chaque plateforme est nécessaire pour activer le flux d’authentification. Suivez les instructions pour chaque plateforme ciblée.
- Android
- iOS
- macOS
- Web
Ouvrez le fichier Remplacez
android/app/build.gradle et ajoutez les variables de substitution du manifeste suivantes dans android > defaultConfig :android/app/build.gradle
{yourDomain} par votre domaine Auth0 (par exemple, example.us.auth0.com).schéma httpsPour utiliser le schéma https pour votre URL de rappel, configurez les liens d’application Android pour votre application.Pour l’authentification biométrique (facultatif) :Si vous comptez utiliser l’authentification biométrique, modifiez votre fichier MainActivity.kt pour qu’il étende FlutterFragmentActivity :android/app/src/main/kotlin/.../MainActivity.kt
Implémenter la connexion et la déconnexion
Universal Login est la façon la plus simple de configurer l’authentification dans votre application. Nous vous recommandons de l’utiliser pour profiter de la meilleure expérience, d’une sécurité optimale et de l’éventail de fonctionnalités le plus complet.Implémenter la connexion :Implémenter la déconnexion :
- Mobile/macOS
- Web
Importez le SDK Auth0 Flutter et créez une instance
Auth0 :lib/auth_service.dart
- Mobile/macOS
- Web
lib/auth_service.dart
iOS/macOS : Le paramètre Web : Vous devez appeler
useHTTPS: true active les Universal Links sur iOS 17.4+ et macOS 14.4+ pour une sécurité accrue.Android : Si vous utilisez un schéma personnalisé, transmettez-le à la méthode de connexion afin que le SDK puisse rediriger correctement vers la page de connexion, puis revenir à l’application :lib/auth_service.dart
onLoad() au démarrage de votre application. Cette méthode gère le callback de redirection d’Auth0 et rétablit la session de l’utilisateur s’il est déjà authentifié.Afficher les renseignements du profil de l’utilisateur
Le profil de l’utilisateur est récupéré automatiquement lorsque celui-ci se connecte. L’objet
Credentials contient une propriété user avec toutes les informations du profil de l’utilisateur, obtenues en décodant le jeton d’identité.lib/profile_screen.dart
Lancez votre application
Compilez et exécutez votre application Flutter.Dans votre terminal :Déroulement attendu :
- L’application se lance avec votre interface de connexion
- L’utilisateur appuie sur Se connecter → le navigateur ou l’onglet personnalisé s’ouvre avec Universal Login d’Auth0
- L’utilisateur termine l’authentification
- Le navigateur redirige ensuite vers votre application
- L’utilisateur est maintenant authentifié et ses informations d’identification sont stockées
Point de contrôleVous devriez maintenant disposer d’une expérience de connexion Auth0 entièrement fonctionnelle dans votre application Flutter. L’application utilise une authentification sécurisée dans le navigateur et stocke automatiquement les identifiants afin de maintenir la session.
Dépannage et utilisation avancée
Problèmes courants et solutions
Problèmes courants et solutions
L’URL de rappel ne correspond pas
Symptôme : erreur “redirect_uri_mismatch” ou échec silencieux de l’authentification.Solutions :- Vérifiez que Allowed Callback URLs dans Auth0 Dashboard correspond exactement à la configuration de votre application
- Vérifiez le schéma (
https://vshttp://) - Assurez-vous que le nom du package (Android) ou l’identifiant du bundle (iOS/macOS) est correct
- Vérifiez s’il y a une barre oblique finale
Android : l’onglet personnalisé Chrome ne s’ouvre pas
Symptôme : rien ne se passe lorsque vous appelezlogin().Correctif :- Vérifiez que
manifestPlaceholdersest correctement défini dansbuild.gradle - Assurez-vous que l’autorisation Internet figure dans
AndroidManifest.xml: - Vérifiez que Chrome ou un autre navigateur est installé sur l’appareil
iOS : alerte “Open in App”
Symptôme : une alerte s’affiche et demande d’ouvrir dans votre application.Correctif : Il s’agit du comportement attendu avecASWebAuthenticationSession. Pour l’éliminer :- Utilisez les liens universels (nécessite iOS 17.4+ et un compte Apple Developer payant)
- Ou définissez
useEphemeralSession: true(désactive le SSO) :
Web : l’utilisateur est déconnecté après l’actualisation de la page
Symptôme : l’utilisateur semble déconnecté après l’actualisation de la page.Correctif :- Assurez-vous que
onLoad()est appelé pendant l’initialisation de l’application - Essayez d’utiliser
localStoragecomme emplacement du cache : - Assurez-vous que votre domaine est ajouté à Allowed Web Origins dans Auth0 Dashboard
Web : erreur “Must run on a secure origin”
Symptôme : erreur liée à une origine sécurisée dans la console du navigateur.Correctif : Le SDK SPA d’Auth0 exige un contexte sécurisé. Utilisezlocalhost (qui est considéré comme sécurisé) ou déployez sur un domaine HTTPS.Authentification annulée par l’utilisateur
Gérez ce cas correctement dans votre traitement des erreurs :Gestion des identifiants
Gestion des identifiants
Le SDK Auth0 Flutter inclut un Credentials Manager intégré qui stocke de façon sécurisée les identifiants de l’utilisateur. Sur les plateformes mobiles, les identifiants sont chiffrés et stockés dans l’espace de stockage sécurisé de la plateforme (Keychain sur iOS/macOS, SharedPreferences chiffré sur Android).
Vérifier la présence d’identifiants stockés
Avant d’inviter l’utilisateur à se connecter, vérifiez si des identifiants valides existent déjà :lib/auth_service.dart
Récupérer les identifiants stockés
Récupérez les identifiants pour obtenir des jetons ou des renseignements sur l’utilisateur. Le Credentials Manager actualise automatiquement les jetons expirés lorsque c’est possible :lib/auth_service.dart
Gestion des erreurs
Gestion des erreurs
Intégration Flutter avancée
Intégration Flutter avancée
Sécurité accrue des identifiants grâce à la biométrie
Implémentez l’authentification biométrique pour accéder aux identifiants sur mobile :lib/secure_auth_service.dart
Android : Nécessite que
MainActivity étende FlutterFragmentActivity, comme configuré à l’étape 4.iOS/macOS : Nécessite d’ajouter NSFaceIDUsageDescription à votre Info.plist.Scopes personnalisés et audience
Demandez des scopes précis et une audience précise pour votre API :lib/auth_service.dart
Organisations (B2B/entreprise)
Authentifiez les utilisateurs au sein d’une organisation précise :lib/auth_service.dart
Déploiement en production
Déploiement en production
Préparation avant publication
- Configurez les Universal Links (iOS) et les App Links (Android) pour une authentification fluide
- Testez sur plusieurs tailles d’appareils et versions du système d’exploitation
- Gérez correctement les erreurs en cas de défaillance réseau
- Ajoutez des règles ProGuard pour Android si vous utilisez l’obfuscation du code
- Respectez les politiques propres à chaque plateforme pour l’App Store et le Play Store
Considérations de sécurité
- Utilisez le Credentials Manager intégré pour stocker les identifiants en production
- Activez l’authentification biométrique pour les opérations sensibles
- Envisagez l’épinglage de certificats pour renforcer la sécurité de l’API
- Gérez correctement l’actualisation des jetons
- Utilisez
useHTTPS: truepour les Universal Links sur les plateformes prises en charge