Kimlik doğrulama sekmesini kullanarak kimlik doğrulamayı basitleştirme

Auth Tab, Android uygulamalarında kullanılmak üzere güvenli ve basitleştirilmiş bir kimlik doğrulama akışı sağlar. AuthTabIntent oluşturup başlatarak uçtan uca kimlik doğrulama deneyimini yönetmek için tasarlanmış özel bir sekme çağırabilirsiniz. Sekme basitleştirilmiş ve sınırlı özelliklere sahip olduğundan kullanıcılar, o anki göreve odaklanabilir. Tamamlandığında sekme, https veya özel şemalar kullanarak uygulamanıza bir sonuçla geri döner.

Tam özellikli bir özel sekme
Şekil 1. Özel Sekme'nin tüm özelliklerini kullanabilirsiniz.
Minimum işlevselliğe sahip bir yetkilendirme sekmesi
Şekil 2. Minimum özelliklere sahip yetkilendirme sekmesi.

Chrome 137'den itibaren Auth Tab, mevcut özel sekmeler kimlik doğrulama entegrasyonlarının doğrudan yerini alabilir. Cihazları Auth Tab'i desteklemeyen kullanıcılar için Custom Tabs'e geri dönüş otomatik olarak yapılır. Özel sekmelerden yetkilendirme sekmesine geçiş, birkaç satır kod değiştirilerek yapılabilir.

İşleyiş şekli

Auth Tab ile bir istemci uygulaması, beklenen kimlik doğrulama sayfasını içeren bir URL'yi yükleyen bir tarayıcı penceresi sunan özel bir sekme başlatır. İşlem tamamlandıktan sonra, kimlik doğrulama sekmesi geri çağırma işlevini kullanarak kimlik doğrulama sonucunu döndürür.

Kimlik doğrulamanın ardından, daha önce sağlanan geri çağırma yönlendirme URI'sine bir gezinme gerçekleştiğinde yönlendirme yakalanır ve geri çağırma kullanılarak istemci uygulamasına döndürülür. https şemasını kullanan yönlendirmelerde tarayıcı, Digital Asset Links'i kullanarak yönlendirme alan adının ve istemci uygulamasının aynı yayıncıya ait olduğunu doğrular.

İstemci, sağlanan geri çağırma işleviyle yönlendirme şeması (veya https için yönlendirme ana makinesi ve yolu) içeren gezinilen URI'yi alır. Bu veriler, sonuç kodunun yanı sıra kimlik doğrulama arayüzü tarafından sağlanan diğer verileri de içerir. Bu verileri kimlik doğrulamayı onaylamak veya başarısız senaryoları ele almak için kullanabilirsiniz.

Neden Yetkilendirme Sekmesi?

Kimlik doğrulama sekmesinden önce, kimlik doğrulama akışlarını desteklemek için standart bir özel sekme amacı kullanabiliyordunuz. Gelişmiş güvenlik ve kolaylaştırılmış bir deneyim sunmasının yanı sıra kimlik doğrulama için bazı iç işlemleri istemci kodundan soyutladığı için kimlik doğrulama sekmesi tercih edilir. Bu nedenlerden dolayı, Kimlik Doğrulama Sekmesi'nin daha iyi bir deneyim sunduğunu göreceksiniz.

Gelişmiş güvenlik

Tipik bir Özel Sekme uygulamasında, kimlik doğrulama işlemini yapan tarayıcı penceresinden veri almak için bir amaç gerekir. Bu işlem için ek kod gerekir ve uygulamanız, amaçlarınıza yönelik olası müdahalelere açık hâle gelir. Yetkilendirme sekmesiyle, Android API ile istemci uygulaması arasında doğrudan veri aktarımı yapılarak geri çağırma yoluyla veri alınır.

Sorunsuz bir deneyim

Özel sekmede, kullanıcı tarayıcıda kimlik doğrulama akışı için istenmeyen ek özelliklere erişebilir. Yetkilendirme sekmesi, standart bir Özel Sekme'de bulunan özelleştirme seçeneklerinin çoğunu kaldırarak daha basit bir deneyim sunar. Chrome tarayıcılarda bu özellikler arasında küçültme düğmesi, uzun basma bağlam menüsü ve aramak için dokunma ile Chrome'da açma, yer işareti koyma, indirme ve paylaşma ile Ana ekrana ekleme menü öğeleri yer alır.

Kimlik doğrulama sekmeleri, tarayıcının daha önce kaydedilmiş şifreleri ve ödemeleri otomatik olarak doldurması, geri veya ileri gitmesi, yenilemesi, sayfa bilgilerini göstermesi, sayfanın masaüstü sürümünü istemesi ve çeviri yapması gibi özellikleri korur.

Veri soyutlama

Yalnızca kimlik doğrulama sekmesinin uygulanması, tarayıcıdan veri alma amacının yanı sıra kimlik doğrulamanın düzgün çalışması için daha önce AndroidManifest.xml içinde gerekli olan amaç filtrelerini de ortadan kaldırır. Bu sayede istemci tarafındaki karmaşıklık ortadan kalkar. Bu özelliklerden bazıları, kullanıcı cihazlarında yetkilendirme sekmesinin kullanılamadığı durumlarda özel sekmelerle geriye dönük uyumluluk sağlamak için istemci koduna dahil edilebilir.

Kimlik doğrulama sekmesini uygulama

Auth Tab için AndroidX tarayıcı kimlik doğrulama kitaplığı gerekir. AndroidX Browser Library, bir projenin build.gradle dosyasının bağımlılıklar bölümüne eklenebilir. API'ler alfa sürümünde kullanılabilir. Derleme dosyanıza aşağıdakileri ekleyin:

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

Bir yetkilendirme sekmesi başlatmadan önce ActivityResultLauncher işlevini tanımlayın. Bu işlev, ActivityResultCaller ve ActivityResultCallback parametrelerini alır. Bu işlem, etkinlik veya parça oluşturulmadan önce yapılır:

// 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();  
}

Ardından, AuthTabIntent.Builder kullanarak bir AuthTabIntent oluşturun ve launch yöntemini çağırın. Başlatma yöntemleri, ihtiyacınız olan şemaya bağlı olarak iki parametre grubundan birini kabul eder:

  • redirectScheme: Özel bir yönlendirme şeması için tarayıcı, yönlendirir ve URI'yi sağlanan şemayla birlikte döndürür.

  • redirectHost, redirectPath: https yönlendirme şemalarında, API'nin yönlendirmeyi algılayıp URI'yi döndürmesi için tarayıcının ayrı bir ana makineye ve yola ihtiyacı vardır. https kullanırken Digital Asset Links doğrulaması yapılması gerekir.

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

Özel sekmelerden Yetkilendirme Sekmesi'ne geçiş

Özel Sekmeler niyetinizi yeni kimlik doğrulama sekmesi niyeti olarak değiştirerek mevcut Özel Sekmeler kimlik doğrulama uygulamanızı güncelleyin. Kodu ekledikten sonra özel sekmeler amacını bulun ve yeni kimlik doğrulama sekmesi amacına göre değiştirin.

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

Özel sekmelere geri dönüş

Bazı uygulamalarda, kullanıcının cihazının kimlik doğrulama sekmesini işleyemediği durumlarda kimlik doğrulama gerekebilir. Örneğin, varsayılan tarayıcı yetkilendirme sekmesini desteklemiyorsa veya varsayılan tarayıcının sürümü gerekli düzeyde değilse bu durum ortaya çıkabilir. Bu durumlarda, kimlik doğrulama sekmesi amaçları, özel sekmeleri destekleyen tarayıcılarda otomatik olarak özel sekme başlatır.

CustomTabsClient#isAuthTabSupported() kullanarak kimlik doğrulama sekmesinin tarayıcı tarafından desteklenip desteklenmediğini kontrol edebilirsiniz. Bu yöntem, uygulamanızın tarayıcı özelliklerine göre kimlik doğrulama sekmesi veya özel sekmeler akışı başlatma arasında dinamik olarak seçim yapmasına olanak tanır. Kimlik doğrulama sekmesinin desteklenmediği durumu sorunsuz bir şekilde ele almak için mevcut özel sekmeler kodunuzu yedek olarak kimlik doğrulama akışlarını işleyecek şekilde tutarken kimlik doğrulama sekmesi uygulamasını ekleyin.

ActivityResultCallback veya Etkinlik amacınıza gelebilecek verileri dikkatli bir şekilde işleyin. Yedek deneyimi başlatmak için AuthTabIntent kullanılırsa ve kimlik doğrulama sekmesi mevcut tarayıcı tarafından desteklenmiyorsa özel sekme kapatıldığında uygulamanız Activity.RESULT_CANCELED sonucunu alır.

Özel Sekmelere geri dönüşle birlikte kimlik doğrulama sekmesinin uygulanmasına dair bir örneği Android Browser Helper kitaplığında bulabilirsiniz.

Ek kaynaklar