Autorisierung und Authentifizierung in Swift: Überblick über Werkzeuge und Bibliotheken
In der Entwicklung für iOS und macOS hat die Sicherheit von Benutzerdaten höchste Priorität. Authentifizierung (Identitätsbestätigung) und Autorisierung (Gewährung von Zugriffsrechten) sind grundlegende Komponenten jeder modernen App. In diesem Artikel analysieren wir die wichtigsten Werkzeuge, Bibliotheken und Frameworks von Swift zur Implementierung der Anmeldung über die Apple-ID, Drittanbieterdienste (Google, Facebook) sowie die lokale Speicherung von Tokens.
Der Artikel richtet sich an Entwickler, die mit den Grundlagen von Swift und Xcode vertraut sind. Alle Codebeispiele wurden mit Swift 5.9+ getestet und sind mit iOS 17+/macOS 14+ kompatibel.
1. AuthenticationServices: Apple Sign In
Die native Autorisierung über die Apple-ID ist eine zwingende Anforderung des App Store für Apps, die Drittanbieter (Google, Facebook) verwenden. Das Framework AuthenticationServices bietet eine einfache API zur Implementierung von 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): // Benutzer-Token abrufen 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) }}Wichtig: Apple gibt fullName und email nur bei der ersten Anmeldung zurück. Für nachfolgende Autorisierungen verwenden Sie userID aus credential.user.
2. Firebase Authentication: Multi-Provider-Authentifizierung
Firebase Auth ist eine plattformübergreifende Lösung für die Autorisierung per E-Mail, Google, Facebook, GitHub und anderen Anbietern. Es enthält vorgefertigte UI-Komponenten und eine Integration mit Firestore.
Installation über Swift Package Manager:
// Package.swift oder über Xcode: File > Add Packages// URL: https://github.com/firebase/firebase-ios-sdk.git// Wählen Sie FirebaseAuth, FirebaseFirestoreBeispiel für die Anmeldung per E-Mail/Passwort:
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 // Registrierung verarbeiten }}Für Google Sign-In wird zusätzlich das GoogleSignIn SDK verwendet. Firebase verwaltet Sitzungen und Token-Aktualisierungen automatisch.
3. Keychain Services: Sichere Token-Speicherung
Das Speichern von JWT-Tokens oder Refresh-Tokens in UserDefaults ist ein grober Sicherheitsfehler. Verwenden Sie Keychain (verschlüsselter Speicher von iOS/macOS).
Wrapper für Keychain:
import Security
class KeychainManager { static func save(key: String, data: Data) { let query: [String: Any] = [ kSecClass as String: kSecClassGener Auch in der Bibliothek
gRPC für C++: Bibliotheken, Beispiele und Anleitung zur Verwendung
Arbeiten mit Markdown in Java: Bibliotheken, Parser und Beispiele
Aufgabenwarteschlangen für C++: Implementierung und Nutzung
Bildverarbeitung in C#: Größenänderung und Zuschneiden (Resize, Crop)