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

Kimlik doğrulama sekmesi, Android uygulamalarında kullanılmak üzere güvenli ve basitleştirilmiş bir kimlik doğrulama akışı sağlar. Bir AuthTabIntent oluşturup başlatarak uçtan uca kimlik doğrulama deneyimini yönetmek için tasarlanmış özel bir Özel Sekme çağırabilirsiniz. Sekme, kullanıcıların mevcut göreve odaklanmasını sağlamak için basitleştirilmiş ve sınırlı özelliklere sahiptir. Tamamlandığında sekme, https veya özel şemalar kullanarak bir sonuçla uygulamanızı geri çağırır.

Tam özellikli bir özel sekme
Şekil 1. Özel Sekme'nin tüm özellikleri
Minimum işlevsellik içeren bir Kimlik Doğrulama sekmesi
Şekil 2. Minimum özelliklere sahip kimlik doğrulama sekmesi.

Chrome 132'den itibaren Auth Tab, mevcut Özel Sekmeler kimlik doğrulama entegrasyonlarını doğrudan değiştirebilir. Cihazları Auth sekmesini desteklemeyen kullanıcılar için Özel Sekmeler'e geçiş otomatik olarak yapılır. Özel Sekmeler'den Kimlik Doğrulama Sekmesi'ne geçiş, birkaç satır kodda değişiklik yaparak yapılabilir.

İşleyiş şekli

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

Kimlik doğrulamasından sonra, daha önce sağlanan geri çağırma yönlendirme URI'sine 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önlendirmeler için tarayıcı, Dijital Öğe Bağlantıları'nı kullanarak yönlendirme alanının ve istemci uygulamasının aynı yayıncıya ait olduğunu doğrular.

İstemci, sağlanan geri çağırma işlevini kullanarak yönlendirme şemasıyla (veya https için yönlendirme ana makine ve yolu) yönlendirilen URI'yi alır. Bu veriler, bir sonuç kodunun yanı sıra kimlik doğrulama arayüzü tarafından sağlanan diğer verileri içerir. Kimlik doğrulamayı doğrulamak veya başarılı olmayan senaryoları işlemek için bu verileri kullanabilirsiniz.

Neden Kimlik Doğrulama Sekmesi?

Kimlik doğrulama sekmesinden önce, kimlik doğrulama akışlarını desteklemek için standart bir Özel Sekmeler intent'i kullanabiliyordunuz. Kimlik doğrulama sekmesi, gelişmiş güvenlik ve basitleştirilmiş bir deneyim sunmasının yanı sıra kimlik doğrulamayla ilgili bazı iç öğeleri istemci kodundan soyutladığı için tercih edilir. Bu nedenlerden dolayı, kimlik doğrulama sekmesinin daha iyi bir deneyim sunduğunu göreceksiniz.

Gelişmiş güvenlik

Tipik bir özel sekme uygulamasında, kimlik doğrulamayı yöneten tarayıcı penceresinden veri almak için bir intent gerekir. Bu işlem için ek kod gerekir ve uygulamanız, amacınıza yönelik olası müdahalelere maruz kalır. Kimlik doğrulama sekmesinde, Android API ile istemci uygulaması arasında doğrudan veri aktarımıyla geri çağırma kullanılarak veri alınır.

Basitleştirilmiş bir deneyim

Özel sekmede kullanıcı, tarayıcıda kimlik doğrulama akışı için istenmeyen olabilecek ek özelliklere erişebilir. Kimlik doğrulama sekmesi, standart bir özel sekmede bulunan özelleştirme seçeneklerinin çoğunu kaldıran basitleştirilmiş bir deneyim sunar. Chrome tarayıcılarda, simgeyi küçültme düğmesi, uzun basma bağlam menüsü ve dokunarak aramanın yanı sıra Chrome'da aç, yer işareti koyma, indirme ve paylaşma ve Ana ekrana ekle menüsü öğeleri de buna dahildir.

Kimlik doğrulama sekmeleri, daha önce kaydedilen şifreleri ve ödemeleri otomatik olarak doldurma, geri veya ileri gitme, yenileme, sayfa bilgilerini gösterme, sayfanın masaüstü sürümünü isteme ve çeviri sağlama gibi tarayıcı özelliklerini kullanmaya devam eder.

Veri soyutlama

Kimlik doğrulama sekmesi yalnızca uygulandığında, tarayıcıdan veri almak için intent'e ve kimlik doğrulamanın düzgün çalışması için daha önce AndroidManifest.xml içinde gerekli olan intent filtrelerine olan ihtiyaç ortadan kalkar. Bu sayede istemci tarafındaki karmaşıklık ortadan kalkar. Bu özelliklerden bazıları, kullanıcı cihazlarında Kimlik Doğrulama Sekmesi'nin kullanılamadığı durumlarda Özel Sekmelerle geriye dönük uyumluluk sağlamak için istemci koduna dahil edilebilir.

Kimlik Doğrulama Sekmesi'ni uygulama

Kimlik doğrulama sekmesi için AndroidX tarayıcı kimlik doğrulama kitaplığı gerekir. AndroidX Tarayıcı Kitaplığı, 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-alpha01'
}

Kimlik doğrulama sekmesi başlatmadan önce ActivityResultCaller ve ActivityResultCallback alan bir ActivityResultLauncher tanımlayın. 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. Lansman 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ı, URI'yi yönlendirir ve sağlanan şemayla döndürür.

  • redirectHost, redirectPath: https yönlendirme şemalarında, API'nin tarayıcı tarafından yönlendirmenin algılanması ve URI'nin döndürülmesi için ayrı bir ana makine ve yol gerekir. https kullanılırken dijital öğe bağlantısı doğrulaması 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 Sekmeler'den Kimlik Doğrulama Sekmesi'ne taşıma

Özel Sekmeler intent'inizi yeni Kimlik Doğrulama Sekmesi intent'iyle değiştirerek mevcut Özel Sekmeler kimlik doğrulama uygulamanızı güncelleyin. Kodu ekledikten sonra Özel Sekmeler intent'ini bulun ve yeni Kimlik Doğrulama Sekmesi intent'ine 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 yedekleme

Bazı uygulamalarda, kullanıcının cihazı Kimlik Doğrulama Sekmesi'ni işleyebilecek donanıma sahip olmadığı durumlarda kimlik doğrulama gerekebilir. Örneğin, bu durum varsayılan tarayıcı Kimlik Doğrulama Sekmesi'ni desteklemiyorsa veya varsayılan tarayıcının sürümü gerekli düzeyde değilse ortaya çıkabilir. Bu tür durumlarda, kimlik doğrulama sekmesi isteği, Özel Sekmeler'i destekleyen tarayıcılarda otomatik olarak Özel Sekme'yi başlatır.

Bu durumu sorunsuz bir şekilde ele almak için kimlik doğrulama sekmesi uygulamasını eklerken yedek olarak kimlik doğrulama akışlarını işleyen mevcut özel sekmeler kodunuzu kullanmaya devam edin.

Kimlik doğrulama sekmesine hazır cihazları olan kullanıcılar yeni Kimlik Doğrulama Sekmesi akışını görürken diğerleri eski Özel Sekmeler uygulamasına geri döner. ActivityResultCallback veya Etkinlik intent'inize gelebilecek verileri dikkatli bir şekilde ele alın. Yedek deneyimi başlatmak için AuthTabIntent kullanılıyorsa ve kimlik doğrulama sekmesi mevcut tarayıcı tarafından desteklenmiyorsa özel sekme kapatıldığında uygulamanızın Activity.RESULT_CANCELED sonucu aldığını unutmayın.

Özel Sekmelere yedek olarak Auth Sekmesi'nin uygulandığı bir örneği Android Browser Helper kitaplığında bulabilirsiniz.

Ek kaynaklar