Auth Tab biedt een veilige en vereenvoudigde authenticatiestroom voor gebruik in Android-apps. Door een AuthTabIntent
te maken en te starten, kunt u een gespecialiseerd Custom Tab aanroepen dat is ontworpen om een end-to-end authenticatie-ervaring te beheren. Het tabblad is gestript en heeft beperkte mogelijkheden, waardoor gebruikers zich kunnen concentreren op hun taak. Na voltooiing verwijst het tabblad terug naar uw applicatie met een resultaat via https of aangepaste schema's.


Vanaf Chrome 137 kan Auth Tab bestaande authenticatie-integraties voor Custom Tabs direct vervangen. Gebruikers met apparaten die Auth Tab niet ondersteunen, vallen automatisch terug op Custom Tabs. Migreren van Custom Tabs naar Auth Tab kan worden gedaan door een paar regels code aan te passen.
Hoe het werkt
Met Auth Tab opent een client-app een gespecialiseerd Custom Tab dat een browservenster toont met een URL met de verwachte authenticatiepagina. Na voltooiing retourneert Auth Tab het authenticatieresultaat met behulp van een callback.
Na authenticatie wordt de omleiding, wanneer er een navigatie naar de eerder opgegeven callback-omleidings-URI plaatsvindt, vastgelegd en met behulp van de callback teruggestuurd naar de clientapplicatie. Voor omleidingen met behulp van het https-schema controleert de browser met behulp van Digital Asset Links of het omleidingsdomein en de clientapplicatie eigendom zijn van dezelfde uitgever.
De client ontvangt de genavigeerde URI met het omleidingsschema (of voor https, de omleidingshost en het pad) via de meegeleverde callback. Deze gegevens omvatten een resultaatcode en alle andere gegevens die door de authenticatie-interface worden verstrekt. U kunt deze gegevens gebruiken om de authenticatie te verifiëren of om te gaan met mislukte scenario's.
Waarom Auth Tab?
Vóór Auth Tab kon je een standaard Custom Tabs-intentie gebruiken om authenticatiestromen te ondersteunen. Een Auth Tab heeft de voorkeur omdat het verbeterde beveiliging en een gestroomlijnde ervaring biedt en ook een deel van de interne authenticatieprocessen abstraheert van clientcode. Om deze redenen zul je merken dat Auth Tab een betere ervaring biedt.
Verbeterde beveiliging
In een typische Custom Tab-implementatie is een intent vereist om gegevens te ontvangen van het browservenster dat de authenticatie afhandelt. Dit vereist extra code en stelt uw app bloot aan mogelijke interferentie met uw intent. Met een Auth Tab worden gegevens ontvangen via een callback, met directe gegevensoverdracht tussen de Android API en de client-app.
Een gestroomlijnde ervaring
Op een aangepast tabblad heeft de gebruiker toegang tot extra functies in de browser die mogelijk ongewenst zijn voor een authenticatieproces. Een Auth-tabblad biedt een afgeslankte ervaring die de meeste aanpassingsopties die beschikbaar zijn in een standaard aangepast tabblad, weglaat. Voor Chrome-browsers omvat dit de knop voor minimaliseren, het contextmenu met lang indrukken en aanraken om te zoeken, evenals menu-items zoals Openen in Chrome , Bladwijzer toevoegen, Downloaden en delen, en Toevoegen aan startscherm .
Auth Tabs bevatten nog steeds functies waarmee de browser eerder opgeslagen wachtwoorden en betalingen automatisch kan invullen, vooruit of achteruit kan navigeren, kan vernieuwen, pagina-informatie kan weergeven, een desktopversie van de pagina kan opvragen en vertalingen kan verstrekken.
Gegevensabstractie
Door Auth Tab alleen te implementeren, is er geen intentie meer nodig om gegevens van de browser te ontvangen, en zijn er ook geen intentiefilters in AndroidManifest.xml
meer nodig om de authenticatie correct te laten werken. Dit vermindert de complexiteit aan de clientzijde. Sommige van deze functies kunnen nog steeds in de clientcode worden opgenomen voor achterwaartse compatibiliteit met Custom Tabs in situaties waarin Auth Tab niet beschikbaar is op gebruikersapparaten.
Tabblad Auth implementeren
Voor het tabblad Auth is de AndroidX- browserauthenticatiebibliotheek vereist. De AndroidX-browserbibliotheek kan worden toegevoegd in de sectie 'Dependencies' van build.gradle
-bestand van een project. De API's zijn beschikbaar in een alfaversie. Voeg het volgende toe aan uw buildbestand:
dependencies {
implementation 'androidx.browser:browser:1.9.0'
}
Voordat u een Auth Tab start, declareert u een ActivityResultLauncher
die zowel een ActivityResultCaller
als een ActivityResultCallback
accepteert. Dit gebeurt voordat de activiteit of het fragment wordt aangemaakt:
// 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();
}
Gebruik vervolgens AuthTabIntent.Builder
om een AuthTabIntent
te bouwen en roep vervolgens de launch
methode aan. De launch-methoden accepteren een van de twee sets parameters, afhankelijk van het gewenste schema:
redirectScheme : bij een aangepast redirect-schema leidt de browser om en retourneert de URI met het opgegeven schema.
redirectHost, redirectPath : Voor https-redirectschema's vereist de API een aparte host en pad zodat de browser de redirect kan detecteren en de URI kan retourneren. Bij gebruik van https is verificatie van de Digital Asset Link vereist.
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);
}
Migreren van aangepaste tabbladen naar Auth-tabblad
Werk uw bestaande authenticatie-implementatie voor aangepaste tabbladen bij door de intent voor aangepaste tabbladen aan te passen aan de nieuwe intent voor Auth Tab. Nadat u de code hebt toegevoegd, zoekt u de intent voor aangepaste tabbladen en wijzigt u deze naar de nieuwe intent voor 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);
Terugvallen op aangepaste tabbladen
Sommige implementaties vereisen authenticatie wanneer het apparaat van de gebruiker niet geschikt is voor Auth Tab. Dit kan bijvoorbeeld gebeuren als de standaardbrowser Auth Tab niet ondersteunt of als de versie van de standaardbrowser niet het vereiste niveau heeft. In deze gevallen start een Auth Tab-intentie automatisch een aangepast tabblad voor browsers die aangepaste tabbladen ondersteunen.
U kunt controleren of Auth Tab door de browser wordt ondersteund met CustomTabsClient#isAuthTabSupported()
. Met deze methode kan uw app dynamisch kiezen tussen het starten van een Auth Tab- of een Custom Tabs-flow, afhankelijk van de mogelijkheden van de browser. Om de situatie waarin Auth Tab niet wordt ondersteund, soepel af te handelen, voegt u de Auth Tab-implementatie toe en behoudt u uw bestaande Custom Tabs-code die auth flows verwerkt als fallback.
Zorg ervoor dat u gegevens verwerkt die zowel bij uw ActivityResultCallback
als bij uw Activity-intent terecht kunnen komen. Houd er rekening mee dat als AuthTabIntent
wordt gebruikt om de fallback-ervaring te starten en Auth Tab niet wordt ondersteund door de huidige browser, uw app het resultaat Activity.RESULT_CANCELED
ontvangt wanneer het aangepaste tabblad wordt gesloten.
Een voorbeeld van een implementatie van Auth Tab met een terugval naar Custom Tabs vindt u in de Android Browser Helper -bibliotheek.