Swift Academy · Lektion

Biometrische Authentifizierung

Authentifizieren Sie Benutzer mit Face ID und Touch ID.

Lektion 3 von 413 Schritte

Biometrische Authentifizierung ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Biometrische Authentifizierung mit LocalAuthentication

Face ID und Touch ID ermöglichen es Benutzern, ihre Identität nachzuweisen, ohne ein Passwort einzugeben. Das Framework LocalAuthentication stellt diese Funktion über LAContext bereit. Dieser wertet eine Authentifizierungsrichtlinie aus und teilt Ihnen mit, ob der Benutzer sie erfolgreich bestanden hat.

import LocalAuthentication
let context = LAContext()
// One LAContext object drives a single auth attempt

Zuerst die Verfügbarkeit prüfen

Rufen Sie vor der Aufforderung immer canEvaluatePolicy auf. Dem Gerät fehlt möglicherweise die biometrische Hardware, der Benutzer hat möglicherweise noch keine biometrischen Merkmale registriert oder die biometrische Authentifizierung wurde möglicherweise gesperrt. Bei einem Fehlschlag gibt die Methode einen Bool-Wert und einen Fehler zurück, der den Grund erklärt.

import LocalAuthentication
func canUseBiometrics() -> Bool {
    let context = LAContext()
    var error: NSError?
    return context.canEvaluatePolicy(
        .deviceOwnerAuthenticationWithBiometrics,
        error: &error)
}

Die beiden Richtlinien

.deviceOwnerAuthenticationWithBiometrics erfordert Face ID oder Touch ID ohne Fallback auf den Gerätecode. .deviceOwnerAuthentication versucht zunächst die biometrische Authentifizierung und verwendet als Fallback den Gerätecode. Wählen Sie abhängig davon, ob die Eingabe eines Gerätecodes akzeptabel ist.

import LocalAuthentication
// Biometrics only (no passcode fallback):
let strict = LAPolicy.deviceOwnerAuthenticationWithBiometrics
// Biometrics with passcode fallback:
let lenient = LAPolicy.deviceOwnerAuthentication
_ = (strict, lenient)

Die Richtlinie auswerten

evaluatePolicy führt die Authentifizierung durch und zeigt das Systemfenster für biometrische Authentifizierung an. Die Zeichenfolge localizedReason erklärt dem Benutzer, warum Sie die Authentifizierung anfordern. Die asynchrone Variante gibt einen Bool-Wert zurück oder löst einen Fehler aus.

import LocalAuthentication
func authenticate() async -> Bool {
    let context = LAContext()
    do {
        return try await context.evaluatePolicy(
            .deviceOwnerAuthentication,
            localizedReason:
                String(localized: "Unlock your account"))
    } catch {
        return false
    }
}

Den Typ der biometrischen Authentifizierung erkennen

Nach canEvaluatePolicy gibt context.biometryType an, ob das Gerät .faceID, .touchID, .opticID oder .none verwendet. Nutzen Sie diese Information, um in Ihrer eigenen Benutzeroberfläche das passende Symbol und den passenden Text anzuzeigen.

import LocalAuthentication
func biometryLabel() -> String {
    let context = LAContext()
    _ = context.canEvaluatePolicy(
        .deviceOwnerAuthenticationWithBiometrics, error: nil)
    switch context.biometryType {
    case .faceID:  return "Face ID"
    case .touchID: return "Touch ID"
    case .opticID: return "Optic ID"
    default:       return "Passcode"
    }
}

Fehler behandeln

Fehlschläge werden als LAError-Codes zurückgegeben: .userCancel, .userFallback (der Benutzer hat den Gerätecode gewählt), .biometryLockout nach zu vielen Fehlversuchen und .biometryNotEnrolled. Unterscheiden Sie diese Fälle, um hilfreiche Hinweise statt einer allgemeinen Fehlermeldung anzuzeigen.

import LocalAuthentication
func describe(_ error: Error) -> String {
    guard let la = error as? LAError else { return "failed" }
    switch la.code {
    case .userCancel:        return "cancelled"
    case .biometryLockout:   return "locked out"
    case .biometryNotEnrolled: return "not set up"
    default:                 return "failed"
    }
}

Der Verwendungshinweis für Face ID

Um Face ID zu verwenden, müssen Sie NSFaceIDUsageDescription zu Info.plist hinzufügen und darin den Grund erklären. Wenn der Eintrag fehlt, stürzt die App beim ersten Auswerten einer Face-ID-Richtlinie ab. Für Touch ID ist ein solcher Schlüssel nicht erforderlich.

// Info.plist:
// NSFaceIDUsageDescription =
//   "We use Face ID to unlock your saved passwords."
let required = "NSFaceIDUsageDescription is mandatory"
_ = required

Das Authentifizierungsfenster anpassen

Sie können die Aufforderung anpassen: localizedCancelTitle benennt die Abbrechen-Schaltfläche um, und localizedFallbackTitle legt die Fallback-Option fest oder blendet sie bei einem leeren Wert aus. Wenn Sie den Fallback-Titel leeren, unterdrücken Sie die Option zur Eingabe des Gerätecodes.

import LocalAuthentication
func configured() -> LAContext {
    let context = LAContext()
    context.localizedCancelTitle =
        String(localized: "Not now")
    context.localizedFallbackTitle = "" // hide fallback
    return context
}

Eine erfolgreiche Authentifizierung wiederverwenden

Standardmäßig fordert jedes evaluatePolicy erneut zur Authentifizierung auf. Mit touchIDAuthenticationAllowableReuseDuration kann eine kürzlich erfolgreiche Entsperrung eine spätere Prüfung ohne neue Aufforderung erfüllen. Das ist für mehrere zusammengehörige sensible Aktionen innerhalb eines kurzen Zeitfensters nützlich.

import LocalAuthentication
func reusableContext() -> LAContext {
    let context = LAContext()
    context.touchIDAuthenticationAllowableReuseDuration = 30
    return context
}

Biometrische Authentifizierung und Keychain-Schutz

LAContext überprüft den Benutzer, schützt Daten jedoch nicht selbst. Für echte Sicherheit kombinieren Sie ihn mit SecAccessControl des Keychain, sodass das Geheimnis erst nach erfolgreicher Authentifizierung kryptografisch ausgelesen werden kann — und nicht lediglich hinter einem geprüften Bool-Wert verborgen ist.

import LocalAuthentication
// A bare evaluatePolicy == true is bypassable if your
// logic is tampered with. Prefer SecAccessControl so
// the data is encrypted until auth succeeds.
let pairing = "combine LAContext with Keychain ACL"
_ = pairing

Ein vollständiger Entsperrablauf

Kombinieren Sie die Verfügbarkeitsprüfung, eine typgerechte Benutzerinformation, die Auswertung und die Fehlerbehandlung in einer robusten Routine, die Ihre Benutzeroberfläche aufrufen kann.

import LocalAuthentication
func unlock() async -> Bool {
    let context = LAContext()
    var err: NSError?
    guard context.canEvaluatePolicy(
        .deviceOwnerAuthentication, error: &err) else {
        return false
    }
    return (try? await context.evaluatePolicy(
        .deviceOwnerAuthentication,
        localizedReason:
            String(localized: "Access your vault"))) ?? false
}

Kurztest

Rufen Sie sich den Unterschied zwischen den beiden wichtigsten Richtlinien in Erinnerung.

Zusammenfassung

Sie haben die biometrische Authentifizierung kennengelernt:

  • Verwenden Sie LAContext und rufen Sie vor evaluatePolicy zunächst canEvaluatePolicy auf.
  • .deviceOwnerAuthenticationWithBiometrics verwendet ausschließlich biometrische Authentifizierung; .deviceOwnerAuthentication ergänzt den Gerätecode als Fallback.
  • Lesen Sie biometryType aus, um die richtigen Formulierungen zu verwenden, und behandeln Sie LAError-Codes wie .biometryLockout.
  • Fügen Sie NSFaceIDUsageDescription hinzu und kombinieren Sie die biometrische Authentifizierung mit SecAccessControl des Keychain für echten Schutz.
Kostenlos starten

Lerne Swift mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
122
Lektionen
409

Häufig gestellte Fragen

Ist die Lektion „Biometrische Authentifizierung“ kostenlos?

Ja — der vollständige Text von „Biometrische Authentifizierung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Biometrische Authentifizierung“?

Authentifizieren Sie Benutzer mit Face ID und Touch ID. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Swift Academy zu starten?

Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Biometrische Authentifizierung“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?

Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Geheimnisse im Keychain speichern
  2. Zugriffskontrolle für den Keychain
  3. Biometrische Authentifizierung
  4. Datenschutz und Verschlüsselung
← Zurück zu Swift Academy