Intégration auth0-net-ios
Ajoutez l'authentification Auth0 aux applications .NET iOS. Cette skill intègre le package NuGet Auth0.OidcClient.iOS qui utilise ASWebAuthenticationSession pour des flux de connexion et déconnexion OIDC sécurisés avec PKCE.
Instruction agent : Avant de fournir les instructions de configuration du SDK, récupérez la dernière version de publication en exécutant :
gh api repos/auth0/auth0-oidc-client-net/releases --jq '[.[] | select(.tag_name | startswith("ios-")) | .tag_name | ltrimstr("ios-")] | .[0]'Utilisez la version retournée dans toutes les lignes de dépendance au lieu de toute version codée en dur ci-dessous.
Prérequis
- .NET 8.0 SDK ou version ultérieure (.NET 9 également supporté — utilisez le framework cible
net9.0-ios) - JetBrains Rider ou VS Code avec C# Dev Kit (avec la charge de travail iOS)
- macOS avec Xcode 15+
- Cible de déploiement iOS 14.0+
- Compte Auth0 avec une application Native configurée
- Node.js 20+ (pour la configuration automatisée Auth0 CLI)
Quand NE PAS l'utiliser
| Cas d'usage | Skill recommandée |
|---|---|
| Application .NET MAUI multi-plateforme (iOS + Android + Windows) | auth0-maui |
| Application .NET Android uniquement | auth0-net-android |
| Application iOS Swift uniquement | auth0-swift |
| Application web côté serveur ASP.NET Core | auth0-aspnetcore-authentication |
| API Web ASP.NET Core (validation JWT) | auth0-aspnetcore-api |
| Application React Native mobile | auth0-react-native |
Flux de démarrage rapide
Instruction agent : Avant de commencer, examinez le projet de l'utilisateur :
- Identifiez la version .NET dans le fichier
.csproj(TargetFramework)- Vérifiez les implémentations d'authentification existantes — recherchez les gestionnaires de connexion/déconnexion existants et intégrez-vous à eux s'ils sont trouvés (réutilisez les éléments UI existants comme les boutons de connexion plutôt que d'en créer des doublons)
- Notez l'identifiant de bundle du projet à partir de
Info.plistou.csproj- Recherchez toute utilisation existante d'
Auth0ClientouAuth0ClientOptionspour éviter une configuration en doublon
- Installez le SDK :
dotnet add package Auth0.OidcClient.iOS - Configurez Auth0 : Consultez le Guide de configuration pour une configuration automatique ou manuelle.
- Intégrez l'authentification : Ajoutez l'instanciation d'
Auth0Client, enregistrez le schéma URL dansInfo.plist, et connectez la connexion/déconnexion aux actions UI. - Gérez le callback : Implémentez
OpenUrldansAppDelegateet appelezActivityMediator.Instance.Send(url.AbsoluteString). - Générez et vérifiez :
dotnet build
Instruction agent : Lors de la rédaction de la configuration Auth0Client :
- Le SDK iOS ne nécessite PAS de passer un contexte Activity — juste
new Auth0Client(options).- Définissez toujours
Scope = "openid profile email offline_access"— la portéeoffline_accessest requise pour recevoir les tokens de rafraîchissement, permettant le renouvellement silencieux des tokens d'accès sans re-demander à l'utilisateur.- L'URL de callback est automatiquement dérivée de l'identifiant de bundle :
{BundleId}://{domain}/ios/{BundleId}/callback.- L'identifiant de bundle doit être enregistré en tant que schéma URL dans
Info.plist.- L'
AppDelegatedoit gérerOpenUrlet appelerActivityMediator.Instance.Send(url.AbsoluteString).- Stockez les tokens de manière sécurisée : Après une connexion réussie, persistez l'
AccessTokenet leRefreshTokenen utilisant le Keychain iOS (via le frameworkSecurityou un wrapper commeKeychainAccess). Ne stockez jamais les tokens dansUserDefaultsou uniquement dans des variables en mémoire.Après la rédaction de la configuration et du code, vérifiez que la génération réussit :
dotnet buildSi la génération échoue, tentez de corriger le problème. Après 5-6 tentatives échouées, demandez de l'aide à l'utilisateur.
WebAuth — Comment fonctionne l'authentification
Le SDK utilise ASWebAuthenticationSession (le navigateur système sécurisé). Quand LoginAsync() est appelée :
- Le SDK construit l'URL
/authorizeavec les paramètres PKCE (vérificateur de code + challenge) - ASWebAuthenticationSession ouvre la page de connexion Auth0
- L'utilisateur s'authentifie (formulaire de connexion, connexions sociales, MFA, etc.)
- Auth0 redirige vers l'URL de callback native :
{BundleId}://{domain}/ios/{BundleId}/callback - iOS intercepte le schéma URL et le remet à
AppDelegate.OpenUrl ActivityMediator.Instance.Send(url.AbsoluteString)complète l'échange de tokens- Le SDK retourne
LoginResultavec le token d'accès, le token ID, le token de rafraîchissement et les revendications de l'utilisateur
C'est le flux standard OAuth 2.0 Authorization Code avec PKCE, recommandé pour les applications mobiles natives.
Configuration de l'URL de callback
L'URL de callback native pour .NET iOS utilise l'identifiant de bundle comme schéma. Le format est :
YOUR_BUNDLE_IDENTIFIER://YOUR_AUTH0_DOMAIN/ios/YOUR_BUNDLE_IDENTIFIER/callback
Où YOUR_BUNDLE_IDENTIFIER est l'identifiant de bundle pour votre application, tel que com.mycompany.myapplication. Par exemple : com.mycompany.myapp://tenant.us.auth0.com/ios/com.mycompany.myapp/callback.
Remarque : Certains SDK Auth0 natifs utilisent
https://{domain}/ios/{bundleId}/callbackou{bundleId}.auth0://{domain}/ios/{bundleId}/callbackcomme format d'URL de callback. Le SDK .NET iOS utilise directement l'identifiant de bundle comme schéma URL.
Assurez-vous que l'URL de callback est en minuscules.
Cette URL doit être :
- Enregistrée dans le tableau de bord Auth0 sous Allowed Callback URLs (URLs de callback autorisées) et Allowed Logout URLs (URLs de déconnexion autorisées)
- Enregistrée en tant que schéma URL dans
Info.plistsousCFBundleURLSchemes
Fait quand
- [ ] Package
Auth0.OidcClient.iOSinstallé (dernière version stable) - [ ]
Auth0Clientconfiguré avec Domain, ClientId, etScope = "openid profile email offline_access" - [ ] Schéma URL enregistré dans
Info.plistcorrespondant à l'identifiant de bundle - [ ]
AppDelegate.OpenUrlimplémenté avecActivityMediator.Instance.Send(url.AbsoluteString) - [ ] URL de callback ajoutée aux URLs de callback autorisées du tableau de bord Auth0 et aux URLs de déconnexion autorisées
- [ ] Tokens stockés de manière sécurisée en utilisant le Keychain iOS (
Securityframework avecSecKeyChain.Add) - [ ] Flux de connexion/déconnexion fonctionnant
- [ ] La génération réussit sans erreurs
Documentation détaillée
- Guide de configuration — Configuration du tenant Auth0, installation du SDK, configuration du schéma URL Info.plist
- Modèles d'intégration — Flux de connexion/déconnexion, accès aux tokens, profil utilisateur, gestion d'erreurs
- Référence API & Tests — Référence complète d'
Auth0ClientOptions, revendications, liste de contrôle des tests, dépannage
Erreurs courantes
| Erreur | Correction |
|---|---|
| Type d'application non défini à Native dans le tableau de bord Auth0 | Changez le type d'application à "Native" dans les paramètres du tableau de bord |
| URL de callback manquante dans le tableau de bord Auth0 | Ajoutez yourbundleid://{domain}/ios/yourbundleid/callback à Allowed Callback URLs ET Allowed Logout URLs |
| Schéma URL manquant dans Info.plist | Ajoutez une entrée CFBundleURLSchemes correspondant à votre identifiant de bundle |
Non-gestion d'OpenUrl dans AppDelegate |
Remplacez OpenUrl et appelez ActivityMediator.Instance.Send(url.AbsoluteString) |
Utilisation du préfixe https:// dans Domain |
Domain doit être le nom d'hôte uniquement (p. ex. tenant.auth0.com, pas https://tenant.auth0.com) |
| Passage d'un contexte Activity à Auth0Client (modèle Android) | iOS n'a pas besoin de contexte — juste new Auth0Client(options) |
| Schéma URL ne correspondant pas à l'identifiant de bundle | La valeur CFBundleURLSchemes doit correspondre exactement à l'identifiant de bundle |
Stockage des tokens dans UserDefaults ou uniquement en mémoire |
Utilisez le Keychain iOS via le framework Security (SecKeyChain.Add) pour la persistance des tokens |
Notes de test
Instruction agent : Rappelez à l'utilisateur de tester sur un appareil physique en plus des simulateurs. Certains comportements de WebAuth/ASWebAuthenticationSession peuvent différer sur les appareils physiques par rapport aux simulateurs. Testez le flux complet de connexion → callback → token sur du matériel réel avant de livrer.
Test sur appareil physique :
- Flux de connexion : ASWebAuthenticationSession s'ouvre → authentification → retour à l'application
- Callback :
OpenUrlse déclenche dans AppDelegate avec l'URL correcte - Flux de déconnexion : Le navigateur s'ouvre → la session est effacée → retour à l'application
- Annulation : L'utilisateur ferme la feuille → l'application gère
UserCancelcorrectement
Skills connexes
- auth0-maui — Applications .NET MAUI multi-plateforme (iOS + Android + Windows)
- auth0-net-android — Applications .NET Android uniquement
- auth0-swift — Applications iOS Swift uniquement
- auth0-aspnetcore-authentication — Applications web côté serveur ASP.NET Core
- auth0-aspnetcore-api — API Web ASP.NET Core avec validation JWT
Référence rapide
using Auth0.OidcClient;
var client = new Auth0Client(new Auth0ClientOptions
{
Domain = "YOUR_AUTH0_DOMAIN",
ClientId = "YOUR_AUTH0_CLIENT_ID",
Scope = "openid profile email offline_access"
});
var loginResult = await client.LoginAsync();
BrowserResultType browserResult = await client.LogoutAsync();
Instruction agent : Incluez toujours
offline_accessdans la portée pour activer les tokens de rafraîchissement. Cela permet à l'application de rafraîchir silencieusement les tokens d'accès sans forcer l'utilisateur à se réauthentifier.Instruction agent : Après la connexion, persistez toujours les tokens vers le Keychain iOS en utilisant le framework
Security(SecKeyChain.AddavecSecAccessible.WhenUnlockedThisDeviceOnly). Ne stockez jamais les tokens dansUserDefaultsou laissez-les uniquement en mémoire. Effacez les tokens à la déconnexion. Consultez Modèles d'intégration pour la classe d'aide complèteSecureTokenStorage.
Configuration de plateforme requise
Ces deux éléments sont requis pour que le callback fonctionne — consultez le Guide de configuration pour le code complet :
- Info.plist : Ajoutez une entrée
CFBundleURLSchemescorrespondant à l'identifiant de bundle - AppDelegate : Remplacez
OpenUrlet appelezActivityMediator.Instance.Send(url.AbsoluteString)
Pour la connexion avec des paramètres supplémentaires, la gestion d'erreurs, le rafraîchissement des tokens, l'accès aux revendications utilisateur et des exemples complets de ViewController, consultez Modèles d'intégration.