Vereenvoudig de authenticatie met behulp van het tabblad Auth

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 aangepast tabblad oproepen dat is ontworpen om een ​​end-to-end authenticatie-ervaring te beheren. Het tabblad is uitgekleed en heeft beperkte mogelijkheden, waardoor gebruikers zich kunnen concentreren op de taak die voorhanden is. Na voltooiing roept het tabblad terug naar uw toepassing met een resultaat met behulp van https of aangepaste schema's.

Een volledig uitgerust aangepast tabblad
Figuur 1. Aangepast tabblad met volledige functionaliteit.
Een Auth-tabblad met minimale functionaliteit
Figuur 2. Tabblad Auth met minimale mogelijkheden.

Vanaf Chrome 132 kan Auth Tab de bestaande authenticatie-integraties voor aangepaste tabbladen rechtstreeks vervangen. Voor gebruikers van wie het apparaat het tabblad Auth niet ondersteunt, wordt automatisch teruggevallen op aangepaste tabbladen. Migreren van aangepaste tabbladen naar het tabblad Auth kan worden gedaan door een paar regels code aan te passen.

Hoe het werkt

Met Auth Tab start een client-app een gespecialiseerd aangepast tabblad dat een browservenster presenteert waarin een URL wordt geladen met de verwachte authenticatiepagina. Na voltooiing retourneert het tabblad Auth het authenticatieresultaat met behulp van een callback.

Wanneer na de verificatie een navigatie naar de eerder opgegeven callback-omleidings-URI plaatsvindt, wordt de omleiding vastgelegd en met behulp van de callback teruggestuurd naar de clienttoepassing. Voor omleidingen die het https-schema gebruiken, verifieert de browser met behulp van Digital Asset Links of het omleidingsdomein en de client-app eigendom zijn van dezelfde uitgever.

De client ontvangt de genavigeerde URI met het omleidingsschema (of voor https, omleidingshost en pad) met behulp van de opgegeven 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 niet-succesvolle scenario's af te handelen.

Waarom het tabblad Authenticatie?

Vóór het tabblad Auth kon u een standaardintentie voor aangepaste tabbladen gebruiken om authenticatiestromen mogelijk te maken. Een Auth-tabblad verdient de voorkeur omdat het verbeterde beveiliging en een gestroomlijnde ervaring biedt en ook een deel van de interne functies voor authenticatie uit de clientcode abstraheert. Om deze redenen zult u merken dat Auth Tab een betere ervaring biedt.

Verbeterde beveiliging

In een typische Custom Tab-implementatie is een intentie vereist om gegevens te ontvangen van het browservenster dat de authenticatie afhandelt. Hiervoor is aanvullende code vereist en wordt uw app blootgesteld aan mogelijke interferentie met uw bedoelingen. 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 authenticatiestroom. Een Auth-tabblad biedt een afgeslankte ervaring waarbij de meeste aanpassingsopties die beschikbaar zijn op een standaard aangepast tabblad worden verwijderd. Voor Chrome-browsers omvat dit de knop Minimaliseren, het contextuele menu lang indrukken en aanraken om te zoeken, evenals menu-items om te openen in Chrome , een bladwijzer te maken, te downloaden en te delen, en Toevoegen aan startscherm .

Auth Tabs behouden nog steeds functies waarmee de browser eerder opgeslagen wachtwoorden en betalingen automatisch kan invullen, achteruit of vooruit kan navigeren, kan vernieuwen, pagina-informatie kan weergeven, een desktopversie van de pagina kan aanvragen en een vertaling kan leveren.

Gegevensabstractie

Door alleen Auth Tab te implementeren, is er geen intentie meer nodig om gegevens van de browser te ontvangen, evenals de intentiefilters in AndroidManifest.xml die voorheen nodig waren om authenticatie goed te laten werken. Dit neemt de complexiteit aan de klantzijde weg. Sommige van deze functies kunnen nog steeds in de clientcode worden opgenomen om achterwaartse compatibiliteit met aangepaste tabbladen te bieden in situaties waarin het tabblad Auth niet beschikbaar is op gebruikersapparaten.

Tabblad Verificatie implementeren

Voor het tabblad Auth is de verificatiebibliotheek van de AndroidX -browser vereist. De AndroidX-browserbibliotheek kan worden toegevoegd in de sectie Afhankelijkheden van het build.gradle bestand van een project. De API's zijn beschikbaar in een alpha-build. Voeg het volgende toe aan uw buildbestand:

dependencies {
    implementation 'androidx.browser:browser:1.9.0-alpha01'
}

Voordat u een Auth-tabblad start, declareert u een ActivityResultLauncher die zowel een ActivityResultCaller als een ActivityResultCallback gebruikt. Dit gebeurt voordat de activiteit of het fragment wordt gemaakt:

// 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 aan. De startmethoden accepteren een van de twee sets parameters op basis van het schema dat u nodig heeft:

  • redirectScheme : Voor een aangepast omleidingsschema leidt de browser de URI om en retourneert deze het opgegeven schema.

  • redirectHost, redirectPath : Voor https-omleidingsschema's vereist de API een aparte host en een afzonderlijk pad voor de browser om de omleiding te detecteren en de URI te retourneren. Bij gebruik van https is Digital Asset Link-verificatie 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);
}

Migreer van aangepaste tabbladen naar het tabblad Auth

Werk uw bestaande authenticatie-implementatie voor aangepaste tabbladen bij door uw intentie voor aangepaste tabbladen te wijzigen in de nieuwe intentie voor verificatietabbladen. Nadat u de code heeft toegevoegd, zoekt u de intentie Aangepaste tabbladen op en wijzigt u deze in de nieuwe intentie 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);

Terugval op aangepaste tabbladen

Sommige implementaties kunnen authenticatie vereisen waarbij het apparaat van de gebruiker niet is uitgerust om Auth Tab te verwerken. Dit kan bijvoorbeeld gebeuren als de standaardbrowser het tabblad Auth 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.

Om deze situatie netjes af te handelen, voegt u de implementatie van het tabblad Auth toe, terwijl u uw bestaande code voor aangepaste tabbladen voor het verwerken van verificatiestromen als reserve behoudt.

Gebruikers met apparaten die geschikt zijn voor Auth Tab zien de nieuwe Auth Tab-stroom, terwijl anderen terugvallen op de verouderde implementatie van Aangepaste tabbladen. Zorg ervoor dat u omgaat met gegevens die betrekking kunnen hebben op uw ActivityResultCallback of op uw activiteitsintentie. 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 terugval op aangepaste tabbladen is te vinden in de Android Browser Helper -bibliotheek.

Aanvullende bronnen