Skip to main content

Utiliser l’IA pour intégrer Auth0

Si vous utilisez un assistant de programmation par IA comme Claude Code, Cursor ou GitHub Copilot, vous pouvez ajouter automatiquement l’authentification Auth0 en quelques minutes grâce aux Agent Skills.Installer :
Demandez ensuite à votre assistant IA :
Votre assistant IA crée automatiquement votre application Auth0, récupère les identifiants, ajoute la dépendance du SDK Auth0 Kotlin Multiplatform, configure les espaces réservés du manifeste Android et le schéma d’URL iOS, et implémente les flux de connexion et de déconnexion. Consultez la documentation complète des Agent Skills.
Utilisez ce guide de démarrage rapide avec Kotlin Multiplatform 2.0 ou une version ultérieure, Android SDK 24 ou une version ultérieure (Android 7.0) et iOS 14 ou une version ultérieure. Le SDK Auth0 Kotlin Multiplatform est actuellement en version 1.0.0-beta.0. Épinglez explicitement cette version, car l’API pourrait changer avant la version stable. Vous avez besoin d’Android Studio (Ladybug ou une version ultérieure) et, pour la cible iOS, de Xcode 15+ sur macOS.

Commencer

Utilisez ce Quickstart pour configurer votre application Kotlin Multiplatform afin que les utilisateurs finaux puissent se connecter et se déconnecter au moyen d’Universal Login d’Auth0, enregistrer les jetons de façon sécuritaire et afficher les profils utilisateur — le tout à partir d’un code Kotlin partagé qui s’exécute autant sur Android que sur iOS.
1

Créer un projet Kotlin Multiplatform

Si vous avez déjà un projet Kotlin Multiplatform, passez à l’étape suivante.Créez un nouveau projet Kotlin Multiplatform doté d’une UI Compose partagée à l’aide du wizard Kotlin Multiplatform de JetBrains (sélectionnez Android et iOS, puis partagez l’UI avec Compose Multiplatform), ou du plugin Kotlin Multiplatform dans Android Studio.Vous obtenez ainsi le layout standard auquel ce guide fait référence tout au long :
Ce guide utilise com.example.app comme application ID / identifiant de bundle. Remplacez cet espace réservé par le vôtre, puisqu’il devient partie intégrante de vos callback URLs Auth0.
2

Ajoutez le SDK Auth0 avec Gradle

Ajoutez le SDK Auth0 Kotlin Multiplatform à l’ensemble de sources commonMain de votre module partagé. La library est publiée sur Maven Central; aucune configuration de repository supplémentaire n’est donc requise.Mettez à jour composeApp/build.gradle.kts :
composeApp/build.gradle.kts
L’artéfact global auth0 intègre tout ce dont vous avez besoin. Pour une empreinte plus légère, vous pouvez plutôt utiliser les modules individuels suivants comme dépendances : auth0-core, auth0-webauth, auth0-authentication, auth0-credentials.
3

Configurez votre application Auth0

Créez une application Native dans Auth0 et enregistrez les callback URLs et logout URLs de la plateforme, tant pour Android que pour iOS.
  1. Accédez au Auth0 Dashboard.
  2. Sélectionnez Applications > Applications > Create Application.
  3. Dans le popup, saisissez un nom pour votre application, sélectionnez Native comme type d’application, puis choisissez Create.
  4. Passez à l’onglet Settings de la page Application Details, puis copiez le Domain et le Client ID. Vous devrez les ajouter à votre code à une étape ultérieure.
Toujours dans l’onglet Settings, configurez les URLs suivantes. Le format du callback est propre au schéma de chaque plateforme : enregistrez donc une entrée pour Android et une autre pour iOS :Allowed Callback URLs :
Allowed Logout URLs :
Remplacez {yourDomain} par votre véritable domaine Auth0 (p. ex. dev-abc123.us.auth0.com) et com.example.app par l’ID d’application ou l’identifiant de bundle de votre application.
Les Allowed Callback URLs garantissent que les utilisateurs finaux sont redirigés en toute sécurité vers votre application après l’authentification. Sans URL correspondante, le processus de connexion échouera. Les Allowed Logout URLs garantissent que les utilisateurs sont redirigés vers votre application après leur déconnexion.Le format du rappel intègre l’identifiant de votre package ou de votre bundle : SCHEME://YOUR_DOMAIN/android/APPLICATION_ID/callback pour Android et SCHEME://YOUR_DOMAIN/ios/BUNDLE_ID/callback pour iOS. Par défaut, le schéma correspond à l’ID d’application ou à l’identifiant de bundle.
Important : assurez-vous que le nom du package ou du bundle dans vos callback URLs correspond exactement à votre applicationId (Android) et à votre identifiant de bundle (iOS). Si l’authentification échoue, vérifiez que ces valeurs sont bien identiques.
4

Enregistrez le schéma de redirection sur chaque plateforme

Le SDK fournit une RedirectActivity (Android, fusionnée automatiquement) et utilise ASWebAuthenticationSession (iOS) pour intercepter le callback. Il ne vous reste qu’à déclarer le schéma d’URL sur chaque plateforme.Android : ajoutez les espaces réservés du manifest dans votre fichier de build Android. La RedirectActivity du SDK lit ces valeurs :
composeApp/build.gradle.kts
Assurez-vous également que votre fichier AndroidManifest.xml demande la permission Internet :
composeApp/src/androidMain/AndroidManifest.xml
iOS : enregistrez le schéma d’URL dans iosApp/iosApp/Info.plist (ou dans Xcode → cible → InfoURL Types) :
iosApp/iosApp/Info.plist
5

Initialiser le SDK Auth0

Dans votre ensemble de sources partagé commonMain, créez le client Auth0 une seule fois, puis réutilisez-le. Il contient la couche de transport partagée par Web Auth, l’Authentication API et le Credentials Manager.Créez composeApp/src/commonMain/kotlin/Auth0Config.kt :
composeApp/src/commonMain/kotlin/Auth0Config.kt
En production, évitez de coder en dur les credentials dans le code source. L’application d’exemple lit auth0.domain et auth0.clientId depuis local.properties et les expose au moyen d’une configuration générée. Le Domain et le Client ID proviennent tous deux des Application Settings dans le Auth0 Dashboard. Le domain ne doit pas inclure le schéma https://.
6

Implement Login et Logout

Chaque méthode d’Auth0 Kotlin Multiplatform est une fonction suspend (coroutine) qui retourne un Result<Success, Error> : aucune exception n’est levée pour les erreurs de domaine. Encapsulez les appels dans un ViewModel afin que votre interface Compose puisse observer le state.Créez composeApp/src/commonMain/kotlin/AuthViewModel.kt :
composeApp/src/commonMain/kotlin/AuthViewModel.kt
Intégrez le modèle de vue à un écran Compose partagé entre les deux plateformes :
composeApp/src/commonMain/kotlin/App.kt
7

Afficher le profil de l’utilisateur

Après le login, effectuez une requête à userInfo de l’Authentication API avec l’access token afin de récupérer le profil de l’utilisateur authentifié.
composeApp/src/commonMain/kotlin/AuthViewModel.kt
Au lancement de l’application, vous pouvez passer outre l’écran de connexion si des credentials valides existent déjà : credentialsManager.hasValidCredentials() retourne true lorsqu’une session stockée et non expirée est disponible. Utilisez credentialsManager.getCredentials() pour récupérer un access token valide et renouveler automatiquement celui-ci à l’aide du refresh token lorsque nécessaire.
8

Lancez votre appli

Compilez et lancez l’application sur chaque cible :
Déroulement attendu :
  1. L’application démarre en affichant un bouton “Log In”.
  2. Touchez “Log In” → le navigateur du système ouvre la page Auth0 Universal Login → complétez la connexion.
  3. Le contrôle revient automatiquement à l’application et le bouton devient “Log Out”.
  4. Réussite !
Point de contrôleVous disposez maintenant d’une application Compose Multiplatform avec Auth0 connexion, la déconnexion, le stockage sécurisé des jetons et la récupération du profil utilisateur — toute la logique d’authentification est partagée entre Android et iOS.

Dépannage et options avancées

Cause : L’URL de rappel générée par le SDK n’est pas répertoriée dans votre application Auth0, ou le schéma et le package ne correspondent pas.Correctif : Vérifiez que les Allowed Callback URLs dans Application Settings correspondent exactement au format de la plateforme — SCHEME://YOUR_DOMAIN/android/APPLICATION_ID/callback pour Android et SCHEME://YOUR_DOMAIN/ios/BUNDLE_ID/callback pour iOS. Le SCHEME (par défaut : l’ID de votre application) et le package ou bundle doivent correspondre exactement aux valeurs de votre projet. Les URL sont sensibles à la casse et le schéma doit être en minuscules.
Cause : Le schéma de rappel n’est pas déclaré sur la plateforme, donc le système d’exploitation ne peut pas rediriger vers votre application.Correctif : Sur Android, vérifiez que manifestPlaceholders["auth0Scheme"] et ["auth0Domain"] sont définis dans composeApp/build.gradle.kts, puis effectuez une compilation propre. Sur iOS, vérifiez que l’entrée CFBundleURLSchemes dans Info.plist correspond à votre identifiant de bundle.
Cause : L’appareil ne peut pas joindre votre tenant Auth0, ou une requête expire.Correctif : Vérifiez que domain dans Auth0Account correspond au domaine de votre tenant, sans le schéma https:// (par exemple, your-tenant.us.auth0.com). Sur un appareil physique, assurez-vous qu’il a accès au réseau. Vous pouvez augmenter les délais d’expiration au moyen de NetworkingConfiguration transmis à Auth0Account.
Cause : Aucun jeton d’actualisation n’est émis; les identifiants expirés ne sont donc pas renouvelés.Correctif : Universal Login demande le scope offline_access par défaut (ce qui renvoie un jeton d’actualisation). Si vous remplacez scope dans LoginOptions, incluez offline_access et activez Rotation des jetons d’actualisation pour l’application dans l’Auth0 Dashboard.
Cause : Les espaces réservés du manifeste auth0Domain / auth0Scheme sont absents; le RedirectActivity fusionné du SDK n’a donc aucune valeur à laquelle se lier.Correctif : Assurez-vous que les deux espaces réservés sont définis dans le bloc defaultConfig de composeApp/build.gradle.kts. Si vous utilisez plusieurs variantes de compilation, définissez-les dans chacune d’elles.
Vérifiez si des identifiants sont stockés avant d’afficher l’écran de connexion afin que les utilisateurs qui reviennent n’aient pas à passer par Universal Login :
Demandez une audience afin qu’Auth0 émette un jeton d’accès pour votre API :
Déconnectez l’utilisateur de l’identity provider upstream ainsi que d’Auth0 :

Prochaines étapes