Authentification et autorisation en Swift : LocalAuthentication, Firebase Auth, Keychain

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Authentification et autorisation en Swift (iOS/macOS) : aperçu des outils et bibliothèques



Dans le développement iOS/macOS moderne, la sécurité et la gestion des accès sont des aspects critiques. Swift fournit à la fois des frameworks intégrés pour l'authentification locale et une intégration avec des services cloud. Dans cet article, nous allons passer en revue les principaux outils et bibliothèques pour implémenter la connexion, l'inscription et la vérification des droits d'utilisateur.



1. LocalAuthentication — Face ID / Touch ID / Apple Watch



Le framework LocalAuthentication permet d'authentifier l'utilisateur par biométrie ou par mot de passe de l'appareil. Fonctionne sur iOS et macOS.



Fonctionnalités principales :

  • Vérification de la disponibilité de la biométrie (Face ID, Touch ID)
  • Authentification avec contexte (LAContext)
  • Utilisation du code de l'appareil comme option de secours


Exemple de code :



import LocalAuthentication

func authenticateUser(completion: @escaping (Bool, Error?) -> Void) { let context = LAContext() var error: NSError?

// Vérifier si la biométrie est disponible guard context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) else { completion(false, error) return }

// Lancer l'authentification context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "Confirmez votre identité pour accéder aux données") { success, authError in DispatchQueue.main.async { completion(success, authError) } }}


2. Firebase Authentication — authentification cloud



Firebase Auth est une bibliothèque puissante prenant en charge la connexion par email/mot de passe, Google, Apple, GitHub et d'autres fournisseurs. Idéale pour les applications serveur.



Installation via Swift Package Manager :

// Dans Package.swift, ajoutez :// .package(url: "https://github.com/firebase/firebase-ios-sdk.git", from: "10.0.0")// target: "YourAppTarget", dependencies: ["FirebaseAuth"]


Inscription d'un nouvel utilisateur :



import FirebaseAuth

func signUp(email: String, password: String) { Auth.auth().createUser(withEmail: email, password: password) { authResult, error in if let error = error { print("Erreur d'inscription : \\(error.localizedDescription)") return } print("Utilisateur inscrit : \\(authResult?.user.uid ?? "")") }}


Connexion d'un utilisateur existant :



func signIn(email: String, password: String) {    Auth.auth().signIn(withEmail: email, password: password) { authResult, error in        if let error = error {            print("Erreur de connexion : \\(error.localizedDescription)")            return        }        print("Connexion réussie : \\(authResult?.user.email ?? "")")    }}


3. Keychain Services — stockage sécurisé des tokens



Pour sauvegarder les tokens JWT, mots de passe ou clés, utilisez Keychain. C'est un mécanisme natif d'iOS/macOS.



Exemple de sauvegarde et de lecture :



import Security

func saveToKeychain(key: String, data: Data) -> Bool { let query: [String: Any] = [ kSecClass as String: kSecClassGenericPassword, kSecAttrAccount as String: key, kSecValueData as String: data ] SecItemDelete(query as CFDictionary) let status = SecItemAdd(query as CFDictionary, nil) return status == errSecSuccess}

func readFromKeychain(key: String) -> Data? { let query: [String: Any] = [ kSecClass as String: kSecClassGenericPassword, kSecAttrAccount as String: key, kSecReturnData as String: true, kSecMatchLimit as String: kSecMatchLimitOne ] var result: AnyObject? let status = SecItemCopyMatching(query as CFDictionary, &

Recommendations