Auth0.swift : Enregistrer et renouveler les jetons
Maintenir la connexion de l’utilisateur avec Auth0.swift
Lorsqu’une authentification est effectuée avec la portée offline_access, un est renvoyé et peut être utilisé pour demander un nouveau jeton sans avoir à redemander les informations d’identification.
Auth0.swift fournit une classe utilitaire qui simplifie le stockage et le renouvellement des identifiants. Vous pouvez accéder aux propriétés accessToken et idToken à partir de l’instance Credentials. Il s’agit de la méthode recommandée pour gérer les identifiants des utilisateurs.Importez d’abord le module Auth0 :import Auth0Ensuite, affichez la page :
let credentialsManager = CredentialsManager(authentication: Auth0.authentication())Auth0 .webAuth() .scope("openid profile offline_access") .start { result in switch result { case .success(let credentials): // Transmettre les identifiants au gestionnaire d'identifiants credentialsManager.store(credentials: credentials) case .failure(let error): // Gérer l'erreur }}
Les éléments du Keychain ne sont pas supprimés après la désinstallation de votre application. Nous vous recommandons donc de toujours supprimer tous les éléments du Keychain de votre application au premier lancement.
Il peut être utile d’effectuer une vérification rapide au démarrage de l’application pour s’assurer que des identifiants renouvelables sont enregistrés dans le gestionnaire. Sinon, l’utilisateur peut être redirigé afin de s’authentifier.
guard credentialsManager.canRenew() else { // Afficher la page de connexion}
Vous pouvez récupérer les identifiants de l’utilisateur de la façon suivante :
credentialsManager.credentials { result in switch result { case .success(let credentials): // Identifiants valides ; vous pouvez accéder aux propriétés du jeton comme // `idToken`, `accessToken` case .failure(let error): // Gérer l'erreur, afficher la page de connexion }}
Le renouvellement des identifiants d’un utilisateur fonctionne exactement de la même façon si le jeton a expiré. Le Credentials Manager renouvellera automatiquement les identifiants, les stockera dans le Keychain, puis retournera un Result contenant soit les identifiants, soit une erreur.
Cette section s’adresse aux développeurs qui préfèrent ne pas utiliser le Credentials Manager. Nous incluons l’utilitaire SimpleKeychain –une légère couche au-dessus du Keychain du système– qui peut servir à stocker les jetons de façon sécuritaire.Importez d’abord le module SimpleKeychain :import SimpleKeychainEnsuite, créez une instance et stockez les jetons dont vous avez besoin. Dans ce cas-ci, vous stockerez le access_token et le refresh_token dans le Keychain après une authentification réussie.
let keychain = SimpleKeychain(service: "Auth0")Auth0 .webAuth() .scope("openid profile offline_access") .start { result in switch result { case .success(let credentials): guard let refreshToken = credentials.refreshToken else { // Gérer l'erreur return } // Stocker les jetons do { try keychain.set(credentials.accessToken, forKey: "access_token") try keychain.set(refreshToken, forKey: "refresh_token") } catch { // Gérer l'erreur } // Vous voudrez peut-être rediriger vers le flux principal de votre application à ce stade case .failure(let error): // Gérer l'erreur }}
Une fois qu’elles sont enregistrées, vous pouvez à tout moment demander une nouvelle instance de Credentials.