Authentifizierung und Autorisierung in Swift: LocalAuthentication, Firebase Auth, Keychain

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Authentifizierung und Autorisierung in Swift (iOS/macOS): Überblick über Werkzeuge und Bibliotheken



In der modernen iOS/macOS-Entwicklung sind Sicherheit und Zugriffsverwaltung kritisch wichtige Aspekte. Swift bietet sowohl integrierte Frameworks für die lokale Authentifizierung als auch die Integration mit Cloud-Diensten. In diesem Artikel werden wir die wichtigsten Werkzeuge und Bibliotheken zur Implementierung von Anmeldung, Registrierung und Überprüfung von Benutzerrechten durchgehen.



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



Das Framework LocalAuthentication ermöglicht die Authentifizierung des Benutzers per Biometrie oder Gerätepasswort. Funktioniert auf iOS und macOS.



Hauptfunktionen:

  • Überprüfung der Verfügbarkeit von Biometrie (Face ID, Touch ID)
  • Authentifizierung mit Kontext (LAContext)
  • Verwendung des Gerätecodes als Fallback-Option


Beispielcode:



import LocalAuthentication

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

// Prüfen, ob Biometrie verfügbar ist guard context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) else { completion(false, error) return }

// Authentifizierung starten context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "Bestätigen Sie Ihre Identität für den Zugriff auf Daten") { success, authError in DispatchQueue.main.async { completion(success, authError) } }}


2. Firebase Authentication — Cloud-basierte Authentifizierung



Firebase Auth ist eine leistungsstarke Bibliothek, die die Anmeldung per E-Mail/Passwort, Google, Apple, GitHub und anderen Anbietern unterstützt. Ideal für serverbasierte Anwendungen.



Installation über Swift Package Manager:

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


Registrierung eines neuen Benutzers:



import FirebaseAuth

func signUp(email: String, password: String) { Auth.auth().createUser(withEmail: email, password: password) { authResult, error in if let error = error { print("Registrierungsfehler: \\(error.localizedDescription)") return } print("Benutzer registriert: \\(authResult?.user.uid ?? "")") }}


Anmeldung eines bestehenden Benutzers:



func signIn(email: String, password: String) {    Auth.auth().signIn(withEmail: email, password: password) { authResult, error in        if let error = error {            print("Anmeldefehler: \\(error.localizedDescription)")            return        }        print("Anmeldung erfolgreich: \\(authResult?.user.email ?? "")")    }}


3. Keychain Services — sichere Speicherung von Tokens



Verwenden Sie Keychain zum Speichern von JWT-Tokens, Passwörtern oder Schlüsseln. Dies ist der native Mechanismus von iOS/macOS.



Beispiel für Speichern und Lesen:



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, &

Empfehlungen