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, FirebaseFirestoreExemple 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 Aussi dans la bibliothèque
OpenAPI / Swagger Java : guide complet avec exemples
Migrations de bases de données en TypeScript : guide complet des outils et approches
Migrations de bases de données en C++ : aperçu des outils et bibliothèques
Travailler avec XML en Kotlin : bibliothèques et outils pour l'analyse et la création