L'onglet Auth fournit un flux d'authentification sécurisé et simplifié à utiliser dans les applications Android. En créant et en lançant un AuthTabIntent
, vous pouvez appeler un onglet personnalisé spécialisé conçu pour gérer une expérience d'authentification de bout en bout. L'onglet est épuré et ses fonctionnalités sont limitées, ce qui permet aux utilisateurs de se concentrer sur la tâche à accomplir. À la fin, l'onglet appelle votre application avec un résultat à l'aide de https ou de schémas personnalisés.


À partir de Chrome 132, l'onglet Auth peut remplacer directement les intégrations d'authentification existantes pour les onglets personnalisés. Pour les utilisateurs dont les appareils ne sont pas compatibles avec l'onglet Authentification, le recours aux onglets personnalisés est automatique. Pour migrer des onglets personnalisés vers l'onglet d'authentification, il vous suffit de modifier quelques lignes de code.
Fonctionnement
Avec l'onglet Auth, une application cliente lance un onglet personnalisé spécialisé qui présente une fenêtre de navigateur chargeant une URL avec la page d'authentification attendue. Une fois l'opération terminée, l'onglet Auth renvoie le résultat de l'authentification à l'aide d'un rappel.
Après l'authentification, lorsqu'une navigation vers l'URI de redirection de rappel précédemment fourni se produit, la redirection est capturée et renvoyée à l'application cliente à l'aide du rappel. Pour les redirections utilisant le schéma HTTPS, le navigateur vérifie que le domaine de redirection et l'application cliente appartiennent au même éditeur à l'aide de Digital Asset Links.
Le client reçoit l'URI de navigation avec le schéma de redirection (ou l'hôte et le chemin de redirection pour https) à l'aide du rappel fourni. Ces données incluent un code de résultat ainsi que toutes les autres données fournies par l'interface d'authentification. Vous pouvez utiliser ces données pour valider l'authentification ou gérer les scénarios d'échec.
Pourquoi l'onglet "Authentification" ?
Avant l'onglet Authentification, vous pouviez utiliser un intent de type Custom Tabs standard pour alimenter les flux d'authentification. Une option d'authentification est préférable, car elle offre une sécurité renforcée, une expérience simplifiée et une abstraction de certains éléments internes pour l'authentification à partir du code client. C'est pourquoi l'onglet Auth Tab offre une meilleure expérience.
Sécurité renforcée
Dans une implémentation d'onglet personnalisé typique, un intent est requis pour recevoir des données de la fenêtre du navigateur qui gère l'authentification. Cela nécessite du code supplémentaire et expose votre application à des interférences potentielles dans votre intent. Avec une fiche d'authentification, les données sont reçues à l'aide d'un rappel, avec un transfert de données direct entre l'API Android et l'application cliente.
Une expérience simplifiée
Dans un onglet personnalisé, l'utilisateur a accès à des fonctionnalités supplémentaires du navigateur qui peuvent être indésirables pour un flux d'authentification. Une fiche d'authentification offre une expérience allégée qui supprime la plupart des options de personnalisation disponibles dans une fiche personnalisée standard. Pour les navigateurs Chrome, cela inclut le bouton de réduction, le menu contextuel à appuyer de manière prolongée et la recherche par appui, ainsi que les éléments de menu Ouvrir dans Chrome, "Ajouter aux favoris", "Télécharger" et "Partager", ainsi que Ajouter à l'écran d'accueil.
Les onglets d'authentification conservent toujours des fonctionnalités permettant au navigateur de saisir automatiquement les mots de passe et les paiements précédemment enregistrés, de revenir en arrière ou d'avancer, d'actualiser, d'afficher des informations sur la page, de demander une version pour ordinateur de bureau de la page et de fournir une traduction.
Abstraction des données
L'implémentation de l'onglet Auth Tab seule élimine le besoin d'un intent pour recevoir des données du navigateur, ainsi que les filtres d'intent dans AndroidManifest.xml
qui étaient auparavant nécessaires pour que l'authentification fonctionne correctement. Cela réduit la complexité côté client. Certaines de ces fonctionnalités peuvent toujours être incluses dans le code client pour assurer la rétrocompatibilité avec les onglets personnalisés lorsque l'onglet Auth n'est pas disponible sur les appareils des utilisateurs.
Implémenter l'onglet "Authentification"
L'onglet d'authentification nécessite la bibliothèque d'authentification du navigateur AndroidX. La bibliothèque de navigateur AndroidX peut être ajoutée dans la section "dépendances" du fichier build.gradle
d'un projet. Les API sont disponibles dans une version alpha. Ajoutez ce qui suit à votre fichier de compilation:
dependencies {
implementation 'androidx.browser:browser:1.9.0-alpha01'
}
Avant de lancer une fiche d'authentification, déclarez un ActivityResultLauncher
qui accepte un ActivityResultCaller
et un ActivityResultCallback
. Cette opération est effectuée avant la création de l'activité ou du fragment:
// In your activity
private final ActivityResultLauncher<Intent> mLauncher =
AuthTabIntent.registerActivityResultLauncher(this, this::handleAuthResult);
private void handleAuthResult(AuthResult result) {
String message = switch (result.resultCode) {
case AuthTabIntent.RESULT_OK -> "Received auth result.";
case AuthTabIntent.RESULT_CANCELED -> "AuthTab canceled.";
case AuthTabIntent.RESULT_VERIFICATION_FAILED -> "Verification failed.";
case AuthTabIntent.RESULT_VERIFICATION_TIMED_OUT -> "Verification timed out.";
}
if (result.resultCode == AuthTabIntent.RESULT_OK) {
message += " Uri: " + result.resultUri;
}
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
Ensuite, utilisez AuthTabIntent.Builder
pour créer un AuthTabIntent
, puis appelez la méthode launch
. Les méthodes de lancement acceptent l'un des deux ensembles de paramètres en fonction du schéma dont vous avez besoin:
redirectScheme: pour un schéma de redirection personnalisé, le navigateur redirige et renvoie l'URI avec le schéma fourni.
redirectHost, redirectPath: pour les schémas de redirection HTTPS, l'API nécessite un hôte et un chemin d'accès distincts pour que le navigateur puisse détecter la redirection et renvoyer l'URI. Lorsque vous utilisez HTTPS, la validation Digital Asset Links est requise.
private void launchAuthTab() {
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth"), "mycustomscheme");
}
private void launchAuthTabHttps() {
String host = "your_host";
String path = "your_path";
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", host, path);
}
Migrer des onglets personnalisés vers l'onglet d'authentification
Mettez à jour votre implémentation d'authentification des onglets personnalisés existante en remplaçant l'intent d'onglet personnalisé par le nouvel intent d'onglet d'authentification. Après avoir ajouté le code, recherchez l'intent Custom Tabs et remplacez-le par le nouvel intent Auth Tab.
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build();
customTabsIntent.launchUrl(context, uri)
// change to -->
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", "mycustomscheme");
/* - OR - */
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", host, path);
Revenir aux onglets personnalisés
Certaines implémentations peuvent nécessiter une authentification lorsque l'appareil de l'utilisateur n'est pas équipé pour gérer l'onglet Auth. Par exemple, cela peut se produire si le navigateur par défaut n'est pas compatible avec l'onglet Authentification ou si la version du navigateur par défaut n'est pas à jour. Dans ce cas, un intent d'onglet Auth lance automatiquement un onglet personnalisé pour les navigateurs compatibles avec les onglets personnalisés.
Pour gérer cette situation de manière élégante, ajoutez l'implémentation de l'onglet Auth tout en conservant votre code d'onglets personnalisés existant qui gère les flux d'authentification en cas de défaillance.
Les utilisateurs disposant d'appareils compatibles avec Auth Tab voient le nouveau flux Auth Tab, tandis que les autres utilisent l'ancienne implémentation de Custom Tabs. Veillez à gérer les données pouvant être transmises à votre ActivityResultCallback
ou à votre intent d'activité. Notez que si AuthTabIntent
est utilisé pour lancer l'expérience de remplacement et que l'onglet Authentification n'est pas compatible avec le navigateur actuel, votre application reçoit un résultat Activity.RESULT_CANCELED
lorsque l'onglet personnalisé est fermé.
Vous trouverez un exemple d'implémentation de l'onglet Auth avec remplacement par des onglets personnalisés dans la bibliothèque Android Browser Helper.