Bien que le Gestionnaire d'identifiants soit compatible avec la connexion par mot de passe, nous vous recommandons vivement de privilégier les méthodes d'authentification modernes et plus sécurisées, comme les clés d'accès et Se connecter avec Google. Ces méthodes offrent une sécurité et une expérience utilisateur nettement améliorées. Toutefois, si votre application doit prendre en charge les mots de passe, utilisez ce guide comme référence pour implémenter les mots de passe avec Credential Manager.
Le Gestionnaire d'identifiants fournit une API unifiée permettant à votre application d'enregistrer et de récupérer les identifiants des utilisateurs, y compris les noms d'utilisateur et les mots de passe. Cela simplifie le processus de connexion pour les utilisateurs et leur permet d'utiliser les fournisseurs d'identifiants de manière transparente.
Prérequis
L'implémentation des mots de passe du Gestionnaire d'identifiants fonctionne sur les appareils équipés d'Android 4.4 (niveau d'API 19) et versions ultérieures.
Présentation
Ce guide se concentre sur les modifications à apporter à votre application pour créer, enregistrer et se connecter avec un mot de passe.
- Ajoutez des dépendances à votre application : ajoutez les bibliothèques Credential Manager requises.
- Instanciez Credential Manager : créez une instance Credential Manager.
- Enregistrer le mot de passe d'un utilisateur : stockez les identifiants des utilisateurs de manière sécurisée.
- Se connecter avec un mot de passe : récupérez et utilisez les identifiants stockés pour vous connecter.
- Identifiez les champs qui doivent utiliser la saisie automatique : utilisez la saisie automatique pour améliorer l'expérience utilisateur.
- Ajoutez la prise en charge de Digital Asset Links : ajoutez la prise en charge du partage de mots de passe entre les applications et les sites Web associés.
Ajouter des dépendances à votre application
Ajoutez les dépendances suivantes au fichier build.gradle du module de votre application :
Kotlin
dependencies { implementation("androidx.credentials:credentials:1.7.0-alpha02") }
Groovy
dependencies { implementation "androidx.credentials:credentials:1.7.0-alpha02" }
Instancier le Gestionnaire d'identifiants
Utilisez le contexte de votre application ou de votre activité pour créer un objet CredentialManager.
// Use your app or activity context to instantiate a client instance of
// CredentialManager.
private val credentialManager = CredentialManager.create(context)
Enregistrer le mot de passe d'un utilisateur
Lorsqu'un utilisateur s'inscrit ou modifie son mot de passe dans votre application, enregistrez ces identifiants dans son gestionnaire de mots de passe.
Construisez une requête de mot de passe : l'objet
CreatePasswordRequestcontient le nom d'utilisateur et le mot de passe à enregistrer. AppelezcredentialManager.createCredential()pour lancer le processus d'enregistrement.Gérer la réponse : traitez le
CreatePasswordResponseet gérez les éventuelles erreurs (par exemple, si l'utilisateur annule la requête).
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)
}
}
}
Se connecter avec un mot de passe
Pour récupérer les identifiants enregistrés, créez un GetCredentialRequest avec un GetPasswordOption et appelez getCredential(). Pour filtrer les mots de passe récupérés en fonction des ID utilisateur spécifiés, utilisez le champ facultatif allowedUserIds.
val getPasswordOption = GetPasswordOption()
val credentialRequest = GetCredentialRequest.Builder()
.addCredentialOption(getPasswordOption)
.build()
Identifier les champs qui doivent utiliser la saisie automatique
L'attribut android:isCredential aide les fournisseurs d'identifiants à identifier les champs destinés à la saisie automatique, ce qui permet d'améliorer l'expérience utilisateur. Cet attribut complète l'attribut autofillHints existant.
Voici quelques avantages à indiquer que certains champs sont destinés à l'autocomplétion :
- Précision améliorée de la saisie automatique : aide les gestionnaires de mots de passe et le système Android à mieux identifier les champs destinés aux identifiants.
- Expérience utilisateur améliorée : peut entraîner des suggestions de saisie automatique plus fluides et fiables.
Incluez l'attribut isCredential dans les champs de nom d'utilisateur et de mot de passe, comme indiqué dans l'exemple suivant :
<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" />
Vous pouvez également ajouter l'attribut de manière programmatique, comme indiqué dans l'extrait suivant :
if (android.os.Build.VERSION.SDK_INT >=
android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { // Android 14
usernameEditText.isCredential = true
passwordEditText.isCredential = true
}
Ajouter la prise en charge de Digital Asset Links
Pour assurer la compatibilité avec les gestionnaires de mots de passe, vous devez configurer Digital Asset Links entre votre application et votre site Web. Cela permet de partager les identifiants de manière sécurisée sur les deux plates-formes.