Autorisation et authentification en Swift : guide complet pour iOS/macOS

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 : aperçu des outils et bibliothèques



Dans le développement iOS et macOS, la sécurité des données utilisateur est la priorité numéro un. L'authentification (vérification de l'identité) et l'autorisation (octroi des droits d'accès) sont des composants de base de toute application moderne. Dans cet article, nous analyserons les outils, bibliothèques et frameworks Swift clés pour implémenter la connexion via Apple ID, les services tiers (Google, Facebook), ainsi que le stockage local des jetons.



Cet article est destiné aux développeurs familiers avec les bases de Swift et Xcode. Tous les exemples de code ont été testés sur Swift 5.9+ et sont compatibles avec iOS 17+/macOS 14+.



1. AuthenticationServices : Apple Sign In



L'autorisation native via Apple ID est une exigence obligatoire de l'App Store pour les applications utilisant des fournisseurs tiers (Google, Facebook). Le framework AuthenticationServices fournit une API simple pour implémenter Sign in with Apple.



import AuthenticationServicesimport SwiftUI

struct SignInWithAppleView: View { var body: some View { SignInWithAppleButton( onRequest: { request in request.requestedScopes = [.fullName, .email] }, onCompletion: { result in switch result { case .success(let authResults): // Nous obtenons le jeton de l'utilisateur guard let credential = authResults.credential as? ASAuthorizationAppleIDCredential, let tokenData = credential.identityToken, let token = String(data: tokenData, encoding: .utf8) else { return } print("Apple token: \\(token)") case .failure(let error): print("Error: \\(error.localizedDescription)") } } ) .signInWithAppleButtonStyle(.black) .frame(width: 280, height: 44) }}


Important : Apple renvoie fullName et email uniquement lors de la première connexion. Pour les autorisations suivantes, utilisez userID à partir de credential.user.



2. Firebase Authentication : authentification multi-fournisseur



Firebase Auth est une solution multiplateforme pour l'autorisation via email, Google, Facebook, GitHub et d'autres fournisseurs. Elle comprend des composants d'interface utilisateur prêts à l'emploi et une intégration avec Firestore.



Installation via Swift Package Manager :

// Package.swift ou via Xcode : File > Add Packages// URL : https://github.com/firebase/firebase-ios-sdk.git// Sélectionnez FirebaseAuth, FirebaseFirestore


Exemple de connexion par email/mot de passe :

import FirebaseAuth

func signInWithEmail(email: String, password: String) { Auth.auth().signIn(withEmail: email, password: password) { authResult, error in if let error = error { print("Auth error: \\(error.localizedDescription)") return } guard let user = authResult?.user else { return } print("User signed in: \\(user.uid)") }}

func createUser(email: String, password: String) { Auth.auth().createUser(withEmail: email, password: password) { authResult, error in // Gestion de l'inscription }}


Pour Google Sign-In, le SDK GoogleSignIn est utilisé en complément. Firebase gère automatiquement les sessions et le renouvellement des jetons.



3. Keychain Services : stockage sécurisé des jetons



Stocker des jetons JWT ou des refresh tokens dans UserDefaults est une grave erreur de sécurité. Utilisez Keychain (stockage chiffré iOS/macOS).



Wrapper pour Keychain :

import Security

class KeychainManager { static func save(key: String, data: Data) { let query: [String: Any] = [ kSecClass as String: kSecClassGener

Recommendations