Autorisation et authentification en Swift (iOS/macOS) : guide complet

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

Autorisation et authentification en Swift (iOS/macOS)



L'autorisation et l'authentification sont des composants clés de toute application moderne. Dans l'écosystème Apple (iOS/macOS), les développeurs ont accès à des frameworks et bibliothèques puissants qui simplifient ces processus. Dans cet article, nous examinerons les approches principales, les bibliothèques populaires et fournirons des exemples pratiques en Swift.



Concepts de base



Avant de passer au code, il est important de distinguer deux termes :

  • Authentification — vérification de l'identité de l'utilisateur (par exemple, identifiant + mot de passe, Face ID, Touch ID).
  • Autorisation — détermination des droits d'accès après l'authentification (par exemple, si l'utilisateur peut consulter certaines données).


Fonctionnalités intégrées d'Apple



1. LocalAuthentication (Face ID / Touch ID)

Le framework LocalAuthentication permet d'utiliser les données biométriques de l'appareil pour l'authentification.



import LocalAuthentication

func authenticateWithBiometrics() { let context = LAContext() var error: NSError? // Vérifie si la biométrie est disponible guard context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) else { print("Biométrie indisponible : \\(error?.localizedDescription ?? "erreur")") return } // Demande l'authentification context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "Connectez-vous pour accéder à l'application") { success, authError in DispatchQueue.main.async { if success { print("Authentification réussie") } else { print("Erreur : \\(authError?.localizedDescription ?? "erreur inconnue")") } } }}


2. Keychain Services

Keychain est un stockage sécurisé pour les mots de passe et les jetons. Utilisez-le pour stocker les identifiants après l'authentification.



import Security

func saveToKeychain(service: String, account: String, password: String) { guard let passwordData = password.data(using: .utf8) else { return } let query: [String: Any] = [ kSecClass as String: kSecClassGenericPassword, kSecAttrService as String: service, kSecAttrAccount as String: account, kSecValueData as String: passwordData ] // Supprime les anciennes données si elles existent SecItemDelete(query as CFDictionary) // Ajoute les nouvelles let status = SecItemAdd(query as CFDictionary, nil) if status == errSecSuccess { print("Données sauvegardées dans Keychain") } else { print("Erreur de sauvegarde : \\(status)") }}

func readFromKeychain(service: String, account: String) -> String? { let query: [String: Any] = [ kSecClass as String: kSecClassGenericPassword, kSecAttrService as String: service, kSecAttrAccount as String: account, kSecReturnData as String: true, kSecMatchLimit as String: kSecMatchLimitOne ] var item: CFTypeRef? let status = SecItemCopyMatching(query as CFDictionary, &item) guard status == errSecSuccess, let data = item as? Data else { return nil } return String(data: data, encoding: .utf8)}


Bibliothèques populaires pour l'autorisation



1. Firebase Authentication

Firebase fournit une solution prête à l'emploi pour l'authentification via email/mot de passe, Google, Apple, Facebook et d'autres fournisseurs.



import FirebaseAuth

func signInWithEmail(email: String, password: String) { Auth.auth().signIn(withEmail: email, password: password) { result, error in if let error = error { print("Erreur de connexion : \\(error.localizedDescription)") return } print("Utilisateur connecté : \\(result?.user.uid ?? "aucun")") }

Recommendations