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, & Auch in der Bibliothek
E-Mail-Versand in Rust: Die Bibliotheken lettre und async-smtp für Mailings
ts-mockito für TypeScript: Komplettguide mit Beispielen
Dokka für Kotlin: Komplettguide mit Beispielen
NodaTime für C# (.NET): Vollständiges Tutorial mit Beispielen
Datenbankmigrationen in TypeScript: TypeORM, Prisma und Drizzle