Premiers pas
Créer un projet
Créez un nouveau projet iOS ou macOS pour ce démarrage rapide.Dans Xcode :
- File → New → Project (ou ⌘+Shift+N)
- Sélectionnez l’une des options suivantes :
- Onglet iOS → modèle App
- Onglet macOS → modèle App
- Configurez votre projet :
- Product Name :
Auth0-Sample - Interface : SwiftUI
- Language : Swift
- Use Core Data : décoché
- Include Tests : coché (recommandé)
- Product Name :
- Choisissez un emplacement et cliquez sur Create
Ajouter la trousse de développement logiciel (SDK) d’Auth0
Ajoutez la trousse de développement logiciel (SDK) Auth0 à votre projet à l’aide du gestionnaire de paquets de votre choix.
- Swift Package Manager
- CocoaPods
- Carthage
Dans Xcode :
- File → Add Package Dependencies… (ou ⌘+Shift+K)
- Entrez l’URL du SDK Auth0 :
- Add Package → Sélectionnez la cible de votre application → Add Package
Configurer Auth0
Créez une nouvelle Application Auth0 et configurez les URL de redirection (callback).
- Accédez à Auth0 Dashboard
- Applications > Create Application > Donnez-lui un nom, sélectionnez Native, puis Create
- Dans l’onglet Settings, notez votre Client ID et votre Domaine
- Ajoutez les URL suivantes à URL de redirection autorisées :
- iOS
- macOS
- Ajoutez les URL suivantes à URL de déconnexion autorisées :
- iOS
- macOS
- Cliquez sur Save Changes
Configurer les identifiants de l’application
Créez Faites glisser
Auth0.plist dans le dossier de votre projet :Auth0.plist
Auth0.plist dans Xcode et assurez-vous que l’option « Add to target » est cochée.Créer le service d’authentification
Créez le fichier
AuthenticationService.swift :- Cliquez avec le bouton droit sur votre projet → New File… → Swift File
- Nommez-le
AuthenticationService - Remplacez-en le contenu par :
AuthenticationService.swift
Créer des composants d’interface utilisateur
Créez les fichiers d’interface utilisateur et ajoutez du code :
Configurer le flux d’authentification (facultatif)
Pour améliorer l’expérience utilisateur, vous pouvez réduire les alertes système de différentes façons :
- Utilisez les Universal Links : cela élimine l’invite « Ouvrir dans “AppName” ? » qui apparaît pendant la redirection. Remarque : l’alerte d’autorisation ASWebAuthenticationSession s’affichera tout de même.
- Utilisez des sessions éphémères : cela élimine toutes les alertes d’autorisation. Remarque : cela désactive l’authentification unique (SSO) et les cookies partagés.
- Universal Links
- Session éphémère
- Auth0 Dashboard → Applications → Votre application → Settings → Advanced Settings → Device Settings
- Ajoutez Apple Team ID et bundle identifier → Save
- Xcode : Target → Signing & Capabilities → + Capability → Associated Domains
- Ajoutez :
webcredentials:{yourDomain}
Point de contrôleVous avez maintenant une connexion Auth0 entièrement fonctionnelle dans votre application iOS ou macOS !
Dépannage et fonctions avancées
Problèmes courants et solutions
Problèmes courants et solutions
Erreurs de compilation : module ‘Auth0’ introuvable
- Swift Package Manager : Vérifiez Package Dependencies → Assurez-vous que
Auth0.swifty figure - CocoaPods : Assurez-vous d’ouvrir le fichier
.xcworkspace, et non.xcodeproj - Carthage : Vérifiez que
Auth0.xcframeworkest ajouté à Frameworks, Libraries, and Embedded Content - Nettoyez et reconstruisez : ⌘+Shift+K puis ⌘+R
- Redémarrez Xcode au besoin
L’app plante : ‘Auth0.plist not found’
- Vérifiez que
Auth0.plistse trouve dans l’explorateur de projet Xcode - Sélectionnez le fichier → Inspector → Assurez-vous que la cible de votre app est cochée
- Confirmez qu’il contient les clés
ClientIdetDomainavec vos valeurs - Autre option : utilisez une configuration par programmation (voir la section Intégration avancée ci‑dessous)
Le navigateur s’ouvre mais ne revient jamais à l’app
- Vérifiez que les URL de rappel dans Auth0 Dashboard correspondent exactement à votre identifiant de bundle et à votre plateforme
- Pour iOS : les URL doivent contenir
/ios/, pour macOS :/macos/ - Vérifiez que l’identifiant de bundle dans Xcode correspond aux paramètres Auth0
- Assurez-vous qu’il n’y a pas de fautes de frappe dans les URL (fréquent : deux-points manquants, format de domaine incorrect)
- Utilisateurs de domaine personnalisé : vérifiez que vous utilisez votre domaine personnalisé, et non le domaine Auth0
L’alerte d’autorisation apparaît à chaque fois
Configuration de domaine personnalisé
Configuration de domaine personnalisé
Si vous utilisez un domaine personnalisé, utilisez sa valeur partout à la place de votre domaine Auth0.Exemple : Utilisez
login.example.com au lieu de tenant.auth0.comCeci est obligatoire pour que certaines fonctionnalités fonctionnent correctement :- Mettez à jour
Auth0.plistavec votre domaine personnalisé - Utilisez le domaine personnalisé dans les URL de rappel/de déconnexion
- Pour les Universal Links, utilisez :
webcredentials:login.example.com
Déploiement en production
Déploiement en production
Préparation pour l’App Store
- Configurez les Universal Links pour éliminer l’alerte d’autorisation
- Testez sur plusieurs versions de plateforme et tailles d’appareils
- Mettez en œuvre une gestion adéquate des erreurs pour les pannes réseau
- Ajoutez des descriptions d’utilisation de la confidentialité si vous utilisez le trousseau (Keychain) avec les données biométriques
- Suivez les App Store Review Guidelines pour les flux d’authentification
Bonnes pratiques de sécurité
- Ne journalisez jamais de données d’authentification sensibles en production
- Mettez en œuvre la conformité App Transport Security (ATS)
- Utilisez HTTPS pour toutes les requêtes réseau
- NE PAS épingler les certificats d’API Auth0 – Auth0 ne recommande pas cette pratique
Optimisation des performances
- Toutes les opérations asynchrones utilisent correctement
@MainActorpour les mises à jour de l’interface - Les propriétés
@Publishedutilisent une gestion de mémoire appropriée - Les informations d’identification sont mises en cache de façon sécurisée dans le trousseau (Keychain) pour l’accès hors ligne
- Le profil de l’utilisateur est récupéré à partir du jeton ID (aucune requête réseau supplémentaire)
Intégration avancée
Intégration avancée
Configuration programmatique
Auth0.plist, vous pouvez transmettre les informations d’identification directement dans votre code. C’est utile lorsque les informations d’identification doivent être dynamiques ou propres à un environnement (par exemple, différents tenants Auth0 pour le développement, la préproduction et la production).Remplacez les appels à Auth0.webAuth() par Auth0.webAuth(clientId:domain:) :Sécurité renforcée du trousseau avec les données biométriques
Actualisation automatique du jeton d’accès
CredentialsManager actualise automatiquement les jetons d’accès expirés :- Activer la fonctionnalité App Groups dans Xcode pour toutes les cibles
- Utiliser le même identifiant de groupe d’apps pour toutes les cibles
- Configurer le
CredentialsManagerpartagé dans chaque cible
Comparaison des options de flux d’authentification
| Fonctionnalité | Universal Links | Session éphémère | Valeur par défaut (alerte) |
|---|---|---|---|
| Alertes d’autorisation | Réduites (aucune invite de redirection) | Aucune | Affiche toutes les alertes |
| Prise en charge de la SSO | Oui | Non | Oui |
| Compte Apple Developer | Requis | Non requis | Non requis |
| Expérience utilisateur | Meilleure | Bonne | Acceptable |
| Complexité de configuration | Moyenne | Simple | Simple |
| Prise en charge de la navigation privée | Oui | Oui | Non |
- Applications de production avec SSO : Universal Links (meilleure UX, prise en charge de la SSO, nécessite un compte Apple Developer)
- Applications de production sans SSO : sessions éphémères (aucune alerte, configuration plus simple)
- Tests/Développement : sessions éphémères (configuration rapide, UX la plus épurée)
- Démarrage rapide/Prototypage : valeur par défaut avec alertes (aucune configuration, migration possible plus tard)