Autorisierung und Authentifizierung in Swift: Vollständiger Leitfaden für iOS/macOS

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

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


Beispiel 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

Empfehlungen