Autenticarsi con le password

Sebbene Gestore delle credenziali supporti l'accesso basato su password, consigliamo vivamente di dare la priorità a metodi di autenticazione moderni e più sicuri come le passkey e Accedi con Google. Questi metodi offrono una sicurezza e un'esperienza utente nettamente migliori. Tuttavia, se la tua applicazione deve supportare le password, utilizza questa guida come riferimento per implementare le password con Gestore delle credenziali.

Gestore delle credenziali fornisce un'API unificata per consentire alla tua app di salvare e recuperare le credenziali utente, inclusi nomi utente e password. Questo semplifica la procedura di accesso per gli utenti e consente loro di utilizzare i fornitori di credenziali senza problemi.

Prerequisiti

L'implementazione delle password di Credential Manager funziona sui dispositivi con Android 4.4 (livello API 19) e versioni successive.

Panoramica

Questa guida si concentra sulle modifiche necessarie nella tua app per creare, salvare e accedere con una password.

  • Aggiungi dipendenze alla tua app: aggiungi le librerie di Gestore delle credenziali richieste.
  • Crea un'istanza di Gestore delle credenziali: crea un'istanza di Gestore delle credenziali.
  • Salvare la password di un utente: memorizza le credenziali utente in modo sicuro.
  • Accedi con una password: recupera e utilizza le credenziali memorizzate per l'accesso.
  • Identifica i campi che devono utilizzare la compilazione automatica: utilizza la compilazione automatica per una migliore esperienza utente.
  • Aggiunta del supporto per Digital Asset Links: aggiunta del supporto per la condivisione delle password tra app e siti web collegati.

Aggiungere dipendenze all'app

Aggiungi le seguenti dipendenze al file build.gradle del modulo dell'app:

Kotlin

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

Trendy

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

Crea un'istanza di Gestore delle credenziali

Utilizza il contesto dell'app o dell'attività per creare un oggetto CredentialManager.

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

Salvare la password di un utente

Quando un utente si registra o aggiorna la password all'interno della tua app, salva queste credenziali nel suo gestore delle password.

  1. Crea una richiesta di password: l'oggetto CreatePasswordRequest contiene il nome utente e la password da salvare. Chiama credentialManager.createCredential() per avviare la procedura di salvataggio.

  2. Gestisci la risposta: elabora CreatePasswordResponse e gestisci eventuali errori (ad esempio, se l'utente annulla la richiesta).

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)
        }
    }
}

Accedere con una password

Per recuperare le credenziali salvate, crea un GetCredentialRequest con un GetPasswordOption e chiama getCredential(). Per filtrare le password recuperate in base agli ID utente specificati, utilizza il campo facoltativo allowedUserIds.

val getPasswordOption = GetPasswordOption()

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

Identificare i campi che devono utilizzare il riempimento automatico

L'attributo android:isCredential aiuta i fornitori di credenziali a identificare i campi destinati alla compilazione automatica, per un'esperienza utente più fluida. Questo attributo integra autofillHints esistente.

I vantaggi dell'indicazione di determinati campi da compilare automaticamente includono:

  • Maggiore precisione della compilazione automatica: aiuta i gestori delle password e il sistema Android a identificare meglio i campi destinati alle credenziali.
  • Esperienza utente migliorata: può portare a suggerimenti di compilazione automatica più fluidi e affidabili.

Includi l'attributo isCredential nei campi del nome utente e della password come mostrato nell'esempio seguente:

<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" />

In alternativa, aggiungi l'attributo in modo programmatico come mostrato nel seguente snippet:

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

Per garantire la compatibilità con i gestori delle password, devi configurare Digital Asset Links tra la tua app e il tuo sito web. In questo modo, le credenziali possono essere condivise in modo sicuro su entrambe le piattaforme.