Mit Passwörtern authentifizieren

Credential Manager unterstützt zwar die Anmeldung mit Passwörtern, wir empfehlen jedoch dringend, moderne, sicherere Authentifizierungsmethoden wie Passkeys und „Über Google anmelden“ zu verwenden. Diese Methoden bieten eine deutlich bessere Sicherheit und Nutzerfreundlichkeit. Wenn Ihre Anwendung jedoch Passwörter unterstützen muss, können Sie sich in diesem Leitfaden informieren, wie Sie Passwörter mit Credential Manager implementieren.

Credential Manager bietet eine einheitliche API für Ihre App, mit der Sie Anmeldedaten von Nutzern, einschließlich Nutzernamen und Passwörtern, speichern und abrufen können. Dadurch wird die Anmeldung für Nutzer vereinfacht und sie können Anmeldedatenanbieter nahtlos nutzen.

Vorbereitung

Die Passwortimplementierung von Credential Manager funktioniert auf Geräten mit Android 4.4 (API-Level 19) und höher.

Übersicht

In diesem Leitfaden werden die Änderungen beschrieben, die in Ihrer App erforderlich sind, um ein Passwort zu erstellen, zu speichern und sich damit anzumelden.

  • Abhängigkeiten zu Ihrer App hinzufügen: Fügen Sie die erforderlichen Credential Manager Bibliotheken hinzu.
  • Credential Manager instanziieren: Erstellen Sie eine Credential Manager-Instanz.
  • Passwort eines Nutzers speichern: Speichern Sie Anmeldedaten von Nutzern sicher.
  • Mit einem Passwort anmelden: Rufen Sie gespeicherte Anmeldedaten für die Anmeldung ab und verwenden Sie sie.
  • Felder identifizieren, für die die automatische Vervollständigung verwendet werden soll: Verwenden Sie die automatische Vervollständigung, um die Nutzer freundlichkeit zu verbessern.
  • Unterstützung für Digital Asset Links hinzufügen: Fügen Sie Unterstützung hinzu, um Passwörter für verknüpfte Apps und Websites freizugeben.

Abhängigkeiten zu Ihrer App hinzufügen

Fügen Sie der Datei build.gradle Ihres App-Moduls die folgenden Abhängigkeiten hinzu:

Kotlin

dependencies {
    implementation("androidx.credentials:credentials:1.7.0-alpha02")
}

Groovy

dependencies {
    implementation "androidx.credentials:credentials:1.7.0-alpha02"
}

Credential Manager instanziieren

Verwenden Sie den App- oder Aktivitätskontext, um ein CredentialManager-Objekt zu erstellen.

// Use your app or activity context to instantiate a client instance of
// CredentialManager.
private val credentialManager = CredentialManager.create(context)

Passwort eines Nutzers speichern

Wenn sich ein Nutzer in Ihrer App registriert oder sein Passwort aktualisiert, speichern Sie diese Anmeldedaten in seinem Passwortmanager.

  1. Passwortanfrage erstellen: Das CreatePasswordRequest Objekt enthält den Nutzernamen und das Passwort, die gespeichert werden sollen. Rufen Sie credentialManager.createCredential() auf, um den Speichervorgang zu starten.

  2. Antwort verarbeiten: Verarbeiten Sie die CreatePasswordResponse und verwalten Sie alle Fehler (z. B. wenn der Nutzer die Anfrage abbricht).

suspend fun registerPassword(username: String, password: String) {
    // Initialize a CreatePasswordRequest object.
    val createPasswordRequest =
        CreatePasswordRequest(id = username, password = password)

    // Create credential and handle result.
    coroutineScope {
        try {
            val result =
                credentialManager.createCredential(
                    // Use an activity based context to avoid undefined
                    // system UI launching behavior.
                    activityContext,
                    createPasswordRequest
                )
            // Handle register password result
        } catch (e: CreateCredentialException) {
            handleFailure(e)
        }
    }
}

Mit einem Passwort anmelden

Um gespeicherte Anmeldedaten abzurufen, erstellen Sie eine GetCredentialRequest mit einer GetPasswordOption und rufen Sie getCredential() auf. Wenn Sie filtern möchten, welche Passwörter basierend auf den angegebenen Nutzer-IDs abgerufen werden, verwenden Sie das optionale Feld allowedUserIds.

val getPasswordOption = GetPasswordOption()

val credentialRequest = GetCredentialRequest.Builder()
    .addCredentialOption(getPasswordOption)
    .build()

Felder identifizieren, für die die automatische Vervollständigung verwendet werden soll

Mit dem Attribut android:isCredential können Anmeldedatenanbieter Felder identifizieren, die für die automatische Vervollständigung vorgesehen sind, was zu einer besseren Nutzerfreundlichkeit führt. Dieses Attribut ergänzt die vorhandenen autofillHints.

Die Vorteile, wenn bestimmte Felder für die automatische Vervollständigung vorgesehen sind:

  • Verbesserte Genauigkeit der automatischen Vervollständigung: Passwortmanager und das Android System können Felder, die für Anmeldedaten vorgesehen sind, besser identifizieren.
  • Verbesserte Nutzerfreundlichkeit: Kann zu reibungsloseren und zuverlässigeren Vorschlägen für die automatische Vervollständigung führen.

Fügen Sie das Attribut isCredential in die Felder für Nutzernamen und Passwörter ein, wie im folgenden Beispiel gezeigt:

<EditText
    android:id="@+id/username_edittext"
    android:autofillHints="username"
    android:isCredential="true" />

<EditText
    android:id="@+id/password_edittext"
    android:inputType="textPassword"
    android:autofillHints="password"
    android:isCredential="true" />

Alternativ können Sie das Attribut programmatisch hinzufügen, wie im folgenden Snippet gezeigt:

if (android.os.Build.VERSION.SDK_INT >=
    android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { // Android 14
    usernameEditText.isCredential = true
    passwordEditText.isCredential = true
}

Damit die Kompatibilität mit Passwortmanagern gewährleistet ist, müssen Sie Digital Asset Links zwischen Ihrer App und Ihrer Website konfigurieren. So können Anmeldedaten sicher auf beiden Plattformen freigegeben werden.