Uygulamanızı Kimlik Doğrulama Öykünücüsüne bağlayın

Uygulamanızda Kimlik Doğrulama öykünücüsünü kullanmadan önce , genel Firebase Yerel Öykünücü Paketi iş akışını anladığınızdan ve Yerel Öykünücü Paketi'ni yükleyip yapılandırdığınızdan ve CLI komutlarını gözden geçirdiğinizden emin olun.

Kimlik Doğrulama öykünücüsü ile ne yapabilirim?

Kimlik Doğrulama öykünücüsü, üretim Firebase Kimlik Doğrulaması'nda bulunan işlevlerin çoğunu sağlayarak, Firebase Kimlik Doğrulama hizmetlerinin yüksek kaliteli yerel öykünmesini sağlar. Apple platformları, Android ve Web Firebase SDK'ları ile eşleştirilen öykünücü şunları yapmanızı sağlar:

  • E-posta/parola, telefon numarası/SMS'i test etmek ve üçüncü taraf kimlik sağlayıcılarla (Google gibi) oturum açmak için benzetilmiş kullanıcı hesapları oluşturun, güncelleyin ve yönetin
  • Öykünülmüş kullanıcıları görüntüleyin ve düzenleyin
  • Emülatör Kullanıcı Arayüzü Günlükleri sekmesinde kimlik doğrulamayla ilgili mesajları kontrol edin.

Bir Firebase projesi seçin

Firebase Local Emulator Suite, tek bir Firebase projesi için ürünleri öykünür.

Kullanılacak projeyi seçmek için, öykünücüleri başlatmadan önce, CLI'de çalışma dizininizde firebase use . Veya --project bayrağını her bir öykünücü komutuna iletebilirsiniz.

Local Emulator Suite, gerçek Firebase projelerinin ve demo projelerinin öykünmesini destekler.

Proje tipi Özellikler Emülatörlerle kullanın
Gerçek

Gerçek bir Firebase projesi, sizin oluşturduğunuz ve yapılandırdığınız projedir (büyük olasılıkla Firebase konsolu aracılığıyla).

Gerçek projeler, veritabanı örnekleri, depolama paketleri, işlevler veya o Firebase projesi için kurduğunuz diğer kaynaklar gibi canlı kaynaklara sahiptir.

Gerçek Firebase projeleriyle çalışırken, desteklenen ürünlerin herhangi biri veya tümü için öykünücüler çalıştırabilirsiniz.

Taklit etmediğiniz tüm ürünler için uygulamalarınız ve kodunuz canlı kaynakla (veritabanı örneği, depolama grubu, işlev vb.) etkileşime girer.

Demo

Bir demo Firebase projesinin gerçek bir Firebase konfigürasyonu ve canlı kaynakları yoktur. Bu projelere genellikle kod laboratuvarları veya diğer öğreticiler aracılığıyla erişilir.

Demo projeleri için proje kimlikleri demo ön demo- sahiptir.

Demo Firebase projeleriyle çalışırken, uygulamalarınız ve kodunuz yalnızca öykünücülerle etkileşime girer. Uygulamanız, bir öykünücünün çalışmadığı bir kaynakla etkileşim kurmaya çalışırsa, bu kod başarısız olur.

Mümkün olan her yerde demo projeleri kullanmanızı öneririz. Avantajlar şunları içerir:

  • Bir Firebase projesi oluşturmadan öykünücüleri çalıştırabileceğiniz için daha kolay kurulum
  • Daha güçlü güvenlik, çünkü kodunuz yanlışlıkla taklit edilmeyen (üretim) kaynakları çalıştırırsa, veri değişikliği, kullanım ve faturalandırma şansı yoktur.
  • SDK yapılandırmanızı indirmek için internete erişmeniz gerekmediğinden daha iyi çevrimdışı destek.

Uygulamanızı, Kimlik Doğrulama öykünücüsü ile konuşmak için kullanın

Android, iOS ve web SDK'ları

Kimlik Doğrulama öykünücüsü ile etkileşim kurmak için uygulama içi yapılandırmanızı veya test sınıflarınızı aşağıdaki gibi ayarlayın.

Android
FirebaseAuth.getInstance().useEmulator('10.0.2.2', 9099);
Süratli
Auth.auth().useEmulator(withHost:"localhost", port:9099)

Web version 9

import { getAuth, connectAuthEmulator } from "firebase/auth";

const auth = getAuth();
connectAuthEmulator(auth, "http://localhost:9099");

Web version 8

const auth = firebase.auth();
auth.useEmulator("http://localhost:9099");

Kimlik Doğrulama ve Bulut İşlevleri veya Cloud Firestore veya Gerçek Zamanlı Veritabanı için Firebase Güvenlik Kuralları arasındaki etkileşimleri prototiplemek ve test etmek için ek kurulum gerekmez. Kimlik Doğrulama öykünücüsü yapılandırıldığında ve diğer öykünücüler çalışırken, otomatik olarak birlikte çalışırlar.

Yönetici SDK'ları

FIREBASE_AUTH_EMULATOR_HOST ortam değişkeni ayarlandığında, Firebase Admin SDK'ları Kimlik Doğrulama öykünücüsüne otomatik olarak bağlanır.

export FIREBASE_AUTH_EMULATOR_HOST="localhost:9099"

Cloud Functions öykünücüsünün, Kimlik Doğrulama öykünücüsünden otomatik olarak haberdar olduğunu unutmayın; bu nedenle, Bulut İşlevleri ile Kimlik Doğrulama öykünücüleri arasındaki entegrasyonları test ederken bu adımı atlayabilirsiniz. Ortam değişkeni, Cloud Functions'ta Yönetici SDK'sı için otomatik olarak ayarlanacaktır.

Ortam değişkeni ayarlandığında, Firebase Admin SDK'ları, yerel geliştirme ve testi kolaylaştırmak için Kimlik Doğrulama öykünücüsü (sırasıyla verifyIdToken ve createSessionCookie yöntemleri aracılığıyla) tarafından yayınlanan imzasız Kimlik Belirteçlerini ve oturum tanımlama bilgilerini kabul eder. Lütfen üretimde ortam değişkenini ayarlamadığınızdan emin olun.

Yönetici SDK kodunuzun başka bir ortamda çalışan paylaşılan bir öykünücüye bağlanmasını istiyorsanız , Firebase CLI kullanarak ayarladığınız proje kimliğinin aynısını belirtmeniz gerekir. App'i doğrudan initializeApp için bir proje kimliği iletebilir veya GCLOUD_PROJECT ortam değişkenini ayarlayabilirsiniz.

Node.js Yönetici SDK'sı
admin.initializeApp({ projectId: "your-project-id" });
Çevre değişkeni
export GCLOUD_PROJECT="your-project-id"

Kimlik Belirteçleri

Güvenlik nedenleriyle, Kimlik Doğrulama öykünücüsü, yalnızca diğer Firebase öykünücüleri tarafından veya yapılandırıldığında Firebase Admin SDK'sı tarafından kabul edilen imzasız kimlik belirteçleri yayınlar. Bu belirteçler, üretim modunda çalışan Firebase hizmetleri veya Firebase Admin SDK tarafından reddedilecektir (örneğin, yukarıda açıklanan kurulum adımları olmadan varsayılan davranış).

Kimlik Doğrulama öykünücüsü ve Emulator Suite UI ile etkileşimli prototip oluşturmaya başlamak için Firebase Local Emulator Suite'i başlatın.

firebase emulators:start

Anonim kimlik doğrulama için uygulamanız, platformunuz ( iOS , Android , web ) için oturum açma mantığını kullanabilir.

E-posta/parola kimlik doğrulaması için, Kimlik Doğrulama SDK yöntemlerini kullanarak veya Emulator Suite Kullanıcı Arayüzü'nü kullanarak uygulamanızdan Kimlik Doğrulama öykünücüsüne kullanıcı hesapları ekleyerek prototip oluşturmaya başlayabilirsiniz.

  1. Emulator Suite kullanıcı arayüzünde, Kimlik Doğrulama sekmesine tıklayın.
  2. Kullanıcı ekle düğmesini tıklayın.
  3. E-posta doğrulama alanlarını doldurarak kullanıcı hesabı oluşturma sihirbazını izleyin.

Oluşturulan bir test kullanıcısı ile uygulamanız, platformunuz ( iOS , Android , web ) için SDK mantığıyla kullanıcı oturumunu açıp kapatabilir.

E-posta doğrulamasını/e-posta bağlantı akışlarıyla oturum açmayı test etmek için öykünücü, firebase emulators:start .

i  To verify the email address customer@ex.com, follow this link:
http://localhost:9099/emulator/action?mode=verifyEmail&lang=en&oobCode=XYZ123&apiKey=fake-api-key

Doğrulama olayını simüle etmek için bağlantıyı tarayıcınıza yapıştırın ve doğrulamanın başarılı olup olmadığını kontrol edin.

{
  "authEmulator": {
    "success": "The email has been successfully verified.",
    "email": "customer@example.com"
  }
}

Parola sıfırlamalarını test etmek için öykünücü, (gerektiğinde değiştirebileceğiniz) bir newPassword parametresi dahil olmak üzere benzer bir URL'yi terminale yazdırır.

http://localhost:9099/emulator/action?mode=resetPassword&oobCode=XYZ!23&apiKey=fake-api-key&newPassword=YOUR_NEW_PASSWORD

Etkileşimli olmayan test

E-posta/parola kullanıcı hesaplarını yönetmek için Emulator Suite UI veya istemci kodunu kullanmak yerine, kullanıcı hesapları oluşturmak ve silmek için REST API'lerini çağıran test kurulum komut dosyaları yazabilir ve öykünücü e-posta doğrulamasını doldurmak için bant dışı e-posta doğrulama kodlarını getirebilirsiniz. URL. Bu, platformu ve test kodunu ayrı tutar ve etkileşimli olmayan bir şekilde test etmenize olanak tanır.

Etkileşimli olmayan e-posta ve şifre testi akışları için tipik sıra aşağıdaki gibidir.

  1. Kimlik Doğrulama kaydı REST uç noktası ile kullanıcılar oluşturun.
  2. Testleri gerçekleştirmek için e-postaları ve şifreleri kullanarak kullanıcılarda oturum açın.
  3. Testleriniz için geçerliyse, öykünücüye özel REST uç noktasından mevcut bant dışı e-posta doğrulama kodlarını alın.
  4. Verileri temizlemek için kullanıcı kayıtlarını öykünücüye özel REST uç noktasıyla temizleyin.

Öykünülmüş telefon/SMS kimlik doğrulaması

Telefonla kimlik doğrulama için Auth öykünücüsü şunları desteklemez:

  • reCAPTCHA ve APN akışları. İstemci SDK'ları, öykünücüyle etkileşime girecek şekilde yapılandırıldıktan sonra, entegrasyon testi ( iOS , Android , web ) için açıklanana benzer bir şekilde bu doğrulama yöntemlerini devre dışı bırakır.
  • Firebase konsolunda önceden yapılandırılmış kodlarla telefon numaralarını test edin.

Aksi takdirde, müşteri kodu açısından, telefon/SMS kimlik doğrulama akışı, üretim ( iOS , Android , web ) için açıklananla aynıdır.

Emulator Suite kullanıcı arayüzünü kullanma:

  1. Emulator Suite kullanıcı arayüzünde, Kimlik Doğrulama sekmesine tıklayın.
  2. Kullanıcı ekle düğmesini tıklayın.
  3. Telefon doğrulama alanlarını doldurarak kullanıcı hesabı oluşturma sihirbazını izleyin.

Bununla birlikte, telefonla kimlik doğrulama akışları için, bir taşıyıcıyla bağlantı kurmak kapsam dışı olduğundan ve yerel testler için uygun olmadığından öykünücü herhangi bir metin mesajının teslim edilmesini TETİKLEMEYECEKTİR! Bunun yerine öykünücü, firebase emulators:start ; metin mesajlarını kontrol eden kullanıcıları simüle etmek için bu kodu uygulamaya girin.

Etkileşimli olmayan test

Etkileşimli olmayan telefon kimlik doğrulama testi için, mevcut SMS kodlarını almak için Kimlik Doğrulama öykünücüsü REST API'sini kullanın. Akışı her başlattığınızda kodun farklı olduğunu unutmayın.

Tipik sıralama aşağıdaki gibidir.

  1. Doğrulama sürecini başlatmak için platform signInWithPhoneNumber arayın.
  2. Öykünücüye özel REST uç noktasını kullanarak doğrulama kodunu alın.
  3. Doğrulama koduyla her zamanki gibi confirmationResult.confirm(code) 'u arayın.

Öykünülmüş üçüncü taraf kimlik sağlayıcı (IDP) kimlik doğrulaması

Kimlik Doğrulama öykünücüsü, iOS, Android veya web uygulamalarınızdaki birçok üçüncü taraf kimlik doğrulama akışını üretim kodunda hiçbir değişiklik yapmadan test etmenize olanak tanır. Kimlik doğrulama akışlarına ilişkin örnekler için uygulamanızda kullanabileceğiniz çeşitli sağlayıcı ve platform kombinasyonlarına ilişkin belgelere bakın.

Genel olarak konuşursak, Firebase SDK'sını iki yoldan biriyle kimlik doğrulaması yapmak için kullanabilirsiniz:

  • Uygulamanız, kimlik bilgilerini almak için üçüncü taraf IDP sağlayıcılarıyla tüm etkileşimler dahil olmak üzere SDK'nın tüm süreci uçtan uca yönetmesine olanak tanır.
  • Uygulamanız, o tarafın SDK'sını kullanan bir üçüncü taraf sağlayıcıdan kimlik bilgilerini manuel olarak alır ve bu kimlik bilgilerini Kimlik Doğrulama SDK'sına iletir.

Yine, yukarıdaki dokümantasyon bağlantısını kontrol edin ve kullanmak istediğiniz akışa (Firebase SDK tarafından yönetilen ve manuel kimlik bilgisi alımına karşı) aşina olduğunuzdan emin olun. Kimlik Doğrulama öykünücüsü, her iki yaklaşımın da test edilmesini destekler.

Firebase SDK güdümlü IDP akışlarını test etme

Uygulamanız etkileşimli test için Microsoft, GitHub veya Yahoo ile oturum açmak için OAuthProvider gibi herhangi bir Firebase SDK uçtan uca akışı kullanıyorsa, Kimlik Doğrulama öykünücüsü, test etmenize yardımcı olmak için ilgili oturum açma sayfasının yerel bir sürümünü sunar. signinWithPopup veya signInWithRedirect yöntemini çağıran web uygulamalarından kimlik doğrulama. Yerel olarak sunulan bu oturum açma sayfası, platformunuzun web görünümü kitaplığı tarafından oluşturulan mobil uygulamalarda da görünür.

Öykünücü, akışlar ilerledikçe gerektiğinde sahte üçüncü taraf kullanıcı hesapları ve kimlik bilgileri oluşturur.

IDP akışlarını manuel kimlik bilgisi alımıyla test etme

"Manuel" oturum açma tekniklerini kullanır ve platformunuzun signInWithCredentials yöntemini çağırırsanız, uygulamanız her zamanki gibi gerçek üçüncü taraf oturum açma talebinde bulunacak ve gerçek üçüncü taraf kimlik bilgilerini alacaktır.

Öykünücünün yalnızca Google Sign-In, Apple ve JSON Web Belirteçleri (JWT'ler) olarak uygulanan kimlik belirteçlerini kullanan diğer sağlayıcılardan alınan kimlik bilgileri için signInWithCredential kimlik doğrulamasını desteklediğini unutmayın. Erişim belirteçleri (örn. Facebook veya Twitter tarafından sağlanan ve JWT olmayanlar) desteklenmez. Bir sonraki bölümde bu durumlarda bir alternatif tartışılmaktadır.

Etkileşimli olmayan test

Etkileşimli olmayan testlere yönelik bir yaklaşım, öykünücü tarafından sunulan oturum açma sayfasındaki kullanıcı tıklamalarını otomatikleştirmektir. Web uygulamaları için WebDriver gibi bir kontrol arayüzü kullanın. Mobil için, platformunuzdan Espresso veya Xcode gibi UI test araçlarını kullanın.

Alternatif olarak, kodunuzu signInWithCredential (örneğin bir kod dalında) kullanacak şekilde güncelleyebilir ve hesaplar için gerçek kimlik bilgileri yerine sahte kimlik belirteçleriyle bir belirteç kimlik doğrulama akışı kullanabilirsiniz.

  1. Kodunuzun IDP'den idTokens alan kısmını yeniden düzenleyin veya yorumlayın; bu, testler sırasında gerçek kullanıcı adlarını ve şifreleri girme ihtiyacını ortadan kaldırır ve testlerinizi IDP'deki API kotalarından ve oran sınırlarından kurtarır.
  2. İkinci olarak, signInWithCredential için belirteç yerine bir hazır bilgi JSON dizesi kullanın. Örnek olarak web SDK'sını kullanarak kodu şu şekilde değiştirebilirsiniz:
firebase.auth().signInWithCredential(firebase.auth.GoogleAuthProvider.credential(
  '{"sub": "abc123", "email": "foo@example.com", "email_verified": true}'
));

Öykünücüyle birlikte kullanıldığında, bu kod, Google'da foo@example.com e-posta adresiyle bir kullanıcının kimliğini başarıyla doğrular. Alt alanı, farklı kullanıcılarda oturum açmayı taklit eden herhangi bir dizeyle değiştirilebilen birincil anahtar olarak düşünün. firebase.auth.GoogleAuthProvider örneğin new firebase.auth.OAuthProvider('yahoo.com') veya taklit etmek istediğiniz başka bir sağlayıcı kimliği ile değiştirebilirsiniz.

Kimlik Doğrulama öykünücüsü üretimden nasıl farklıdır?

Firebase Authentication öykünücüsü, üretim ürününün birçok özelliğini simüle eder. Bununla birlikte, herhangi bir kimlik doğrulama sistemi, birden fazla düzeyde (cihaz, 3. taraf sağlayıcılar, Firebase, vb.) büyük ölçüde güvenliğe dayandığından, öykünücünün tüm akışları düzgün bir şekilde yeniden oluşturması zordur.

Bulut IAM'si

Firebase Emulator Suite, çalıştırmak için IAM ile ilgili herhangi bir davranışı kopyalamaya veya bunlara uymaya çalışmaz. Öykünücüler sağlanan Firebase Güvenlik Kurallarına bağlıdır, ancak örneğin Bulut İşlevlerini çağıran hizmet hesabını ve dolayısıyla izinleri ayarlamak için IAM'nin normal olarak kullanılacağı durumlarda öykünücü yapılandırılamaz ve geliştirici makinenizde küresel olarak kullanılabilen hesabı kullanır, doğrudan yerel bir betiği çalıştırmaya benzer.

Mobil platformlarda e-posta bağlantısı oturum açma işlemi Firebase Dynamic Links'e dayandığından, bu tür tüm bağlantılar bunun yerine (mobil) web platformunda açılacaktır.

Üçüncü taraf oturum açma

Üçüncü taraf oturum açma akışları için Firebase Kimlik Doğrulaması, Twitter ve Github gibi üçüncü taraf sağlayıcılardan alınan güvenli kimlik bilgilerine güvenir.

Google ve Apple gibi OpenID Connect sağlayıcılarından gelen gerçek kimlik bilgileri, Kimlik Doğrulama öykünücüsü tarafından kabul edilir. OpenID Connect sağlayıcılarından olmayan kimlik bilgileri desteklenmez.

E-posta / SMS ile oturum açma

Üretim uygulamalarında, e-posta ve SMS oturum açma akışları, kullanıcının alınan bir mesajı kontrol ettiği ve oturum açma arabirimine bir oturum açma kodu girdiği zaman uyumsuz bir işlemi içerir. Kimlik Doğrulama öykünücüsü herhangi bir e-posta veya SMS mesajı göndermez, ancak yukarıda açıklandığı gibi oturum açma kodları oluşturur ve bunları testte kullanılmak üzere terminale gönderir.

Öykünücü, Firebase konsolu kullanılarak yapılabileceği gibi, sabit oturum açma kodlarıyla test telefon numaralarını tanımlama özelliğini desteklemez.

Hız sınırlaması / kötüye kullanımı önleme

Kimlik Doğrulama öykünücüsü, üretim hızı sınırlama veya kötüye kullanım önleme özelliklerini çoğaltmaz.

Sıradaki ne?