Uygulamanızı Kimlik Doğrulama Emülatörü'ne bağlama

Uygulamanızla Authentication emülatörünü kullanmadan önce Firebase Local Emulator Suite iş akışını genel olarak anlarsınız, Ayrıca kurun ve yapılandırdığınız Local Emulator Suite ifadesini tıklayın ve CLI komutlarını inceleyin.

Bu konuyu, DMAIC ve Yalın Altı Sigma yaklaşımına zaten aşina olduğunuz Üretim için Firebase Authentication çözümleri. Gerekirse belgeleri inceleyin platform ve kimlik doğrulama tekniği kombinasyonu kullanmanız önerilir.

Authentication emülatörüyle ne yapabilirim?

Authentication emülatörü, içeriğin yüksek kaliteli yerel emülasyonunu sağlar. Bu üründe bulunan işlevlerin çoğunu sunan Firebase Authentication üretim Firebase Authentication. Apple platformlarıyla eşlendi. Emülatör, Android ve Web Firebase SDK'larını kullanarak şunları yapmanızı sağlar:

  • E-posta/şifre testi için emüle edilmiş kullanıcı hesapları oluşturma, güncelleme ve yönetme, telefon numarası/SMS, SMS ile çok öğeli kimlik ve üçüncü taraf (ör. Google) kimliği sağlayıcı kimlik doğrulaması
  • Emüle edilen kullanıcıları görüntüle ve düzenle
  • Özel jeton kimlik doğrulama sistemlerinin prototipini oluşturma
  • Emülatör Kullanıcı Arayüzü Günlükleri sekmesinde kimlik doğrulamayla ilgili mesajları kontrol edin.

Firebase projesi seçin

Firebase Local Emulator Suite, tek bir Firebase projesi için ürün emülasyonu yapar.

Kullanılacak projeyi seçmek için emülatörleri başlatmadan önce CLI çalıştırmasında Çalışma dizininizde firebase use. Ya da her emülatöre --project işaretini komutuna dokunun.

Local Emulator Suite, gerçek Firebase projelerinin ve demo projeleri.

Proje türü Özellikler Emülatörlerle kullanım
Gerçek

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

Gerçek projelerde veritabanı örnekleri ve depolama alanı gibi canlı kaynaklar bulunur Firebase için oluşturduğunuz paketler, işlevler veya diğer kaynaklar belirler.

Gerçek Firebase projeleriyle çalışırken tüm işlemler için emülatörler çalıştırabilirsiniz. veya desteklenen tüm ürünler.

emüle etmediğiniz tüm ürünlerde uygulamalarınız ve kodunuz live kaynakla (veri tabanı örneği, depolama alanı) grup, işlev vb.) belirtin.

Demo

Demo Firebase projesinin gerçek bir Firebase yapılandırması yoktur ve canlı kaynak yok. Bu projelere genellikle codelab'ler veya eğiticidir.

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

Demo Firebase projeleriyle çalışırken uygulamalarınız ve kodunuz yalnızca emülatörler aracılığıyla gerçekleştirilir. Uygulamanız bir kaynakla etkileşim kurmaya çalışırsa çalışmadığı durumlarda bu kod başarısız olur.

Mümkün olan her yerde demo projeleri kullanmanızı öneririz. Sunulan avantajlar arasında şunlar sayılabilir:

  • Emülatörleri, herhangi bir kod oluşturmadan da çalıştırabildiğiniz için kurulumu daha kolay Firebase projesi
  • Kodunuz yanlışlıkla emülasyonsuz bir kod çağırırsa daha yüksek güvenlik sağlar (üretim) kaynaklarında, veri değişikliği, kullanım ve faturalandırma ihtimali yoktur.
  • Gerektiğinde internet bağlantısı olmadığında çevrimdışı destek SDK yapılandırmanızı indirin.
ziyaret edin.

Emülatörle konuşmak için uygulamanızı kullanın

Android, iOS ve web SDK'ları

API'lerle etkileşimde bulunmak için uygulama içi yapılandırmanızı Authentication emülatörü aşağıdaki gibidir.

Kotlin+KTX
Firebase.auth.useEmulator("10.0.2.2", 9099)
Java
FirebaseAuth.getInstance().useEmulator("10.0.2.2", 9099);
Swift
Auth.auth().useEmulator(withHost:"127.0.0.1", port:9099)

Web

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

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

Web

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

Etkileşimlerin prototipini oluşturmak ve diğer etkileşimlerin test edilmesi için Cloud Firestore için Authentication ve Cloud Functions veya Firebase Security Rules veya Realtime Database. Authentication emülatörü yapılandırıldığında ve diğer emülatörler birlikte otomatik olarak birlikte çalışırlar.

Admin SDK

Firebase Admin SDKAuthentication FIREBASE_AUTH_EMULATOR_HOST ortam değişkeni ayarlandı.

export FIREBASE_AUTH_EMULATOR_HOST="127.0.0.1:9099"

Cloud Functions emülatörünün, Authentication emülatörü sayesinde, ile entegrasyonları test ederken bu adımı atlayabilirsiniz. Cloud Functions ve Authentication emülatörleri. Ortam değişkeni Cloud Functions içinde Admin SDK için otomatik olarak ayarlandı.

Ortam değişkeni ayarlandığında Firebase Admin SDK cihazları imzasız kimliği kabul eder Authentication emülatörü tarafından yayınlanan jetonlar ve oturum çerezleri (verifyIdToken üzerinden) ve createSessionCookie yöntemlerini) kullanın. bahsedeceğiz. Lütfen üretimde ortam değişkenini ayarlamadığınızdan emin olun.

Admin SDK kodunuzun şurada çalışan paylaşılan bir emülatöre bağlanmasını istiyorsanız: başka bir ortamda kullanmak istiyorsanız Firebase CLI'yı kullanarak ayarladığınız proje kimliğini belirtmeniz gerekir. initializeApp hizmetine proje kimliği aktarabilirsiniz ya da GCLOUD_PROJECT ortam değişkenini ayarlayın.

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

Kimlik Jetonları

Güvenlik nedeniyle Authentication emülatörü, imzasız kimlik jetonları yayınlar. Bu jetonlar yalnızca aşağıdaki durumlarda diğer Firebase emülatörleri veya Firebase Admin SDK'sı tarafından kabul edilir yapılandırılmış. Bu jetonlar üretim sürümü tarafından reddedilecektir Firebase hizmetleri veya üretim modunda (ör. varsayılan davranışı (yukarıda açıklanan kurulum adımları olmadan) uygulayın.

Emülatörü başlatma

Authentication emülatörünü Emulator Suite UI üzerinden etkileşimli olarak kullanabilirsiniz ve yerel REST arayüzü üzerinden etkileşimsiz biçimde sunulur. Aşağıdakiler Bölümler, etkileşimli ve etkileşimli olmayan kullanım alanlarını kapsar.

Authentication emülatörünü, REST arayüzünü ve Emulator Suite UI, yürütme:

firebase emulators:start

Uygulamanız, anonim kimlik doğrulama için oturum açma mantığını platform (iOS, Android, web) girin.

E-posta/şifre kimlik doğrulaması için, giriş yaparak prototip oluşturmaya başlayabilirsiniz: Authentication SDK yöntemlerini kullanarak uygulamanızdan Authentication emülatörüne veya Emulator Suite UI kullanarak erişebilirsiniz.

  1. Emulator Suite UI içinde Authentication (Kimlik Doğrulama) sekmesini tıklayın.
  2. Kullanıcı ekle düğmesini tıklayın.
  3. E-posta kimlik doğrulamasını doldurarak kullanıcı hesabı oluşturma sihirbazını izleyin alanları.

Bir test kullanıcısı oluşturulduğunda uygulamanız, platformunuza göre SDK mantığını kullanarak kullanıcının oturumunu açabilir ve kapatabilir (iOS, Android, web) kullanıyor.

E-posta bağlantısı akışlarıyla e-posta doğrulamasını/oturum açmayı test etmek için emülatör firebase emulators:start öğesinin yürütüldüğü terminale bir URL yazdırır.

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

Doğrulama etkinliğini simüle etmek için bu bağlantıyı tarayıcınıza yapıştırın ve doğrulamanın başarılı olup olmadığını gösterir.

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

Şifre sıfırlamalarını test etmek için emülatör, şunlar da dahil olmak üzere benzer bir URL yazdırır: newPassword parametresini (gerektiğinde değiştirebilirsiniz) terminale ekleyin.

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

Etkileşimsiz test

E-postayı/şifreyi yönetmek için Emulator Suite UI veya istemci kodunu kullanmak yerine oluşturmak için REST API'lerini çağıran test kurulumu komut dosyaları ve kullanıcı hesaplarını silin ve bant dışı e-posta doğrulama kodlarını emülatör e-posta doğrulama URL'si. Bu şekilde, platform ve test kodu ayrı tutulur. ve etkileşimsiz testler yapmanızı sağlar.

Etkileşimsiz e-posta ve şifre test akışları için aşağıdaki gibidir.

  1. Authentication signUp REST uç noktası ile kullanıcılar oluşturun.
  2. Testleri gerçekleştirmek için e-postaları ve şifreleri kullanarak kullanıcıların oturumunu açın.
  3. Testleriniz için geçerliyse bant dışı e-posta doğrulamasını getirin kodları emülatöre özgü REST uç noktasından kaldırın.
  4. Verileri temizlemek için kullanıcı kayıtlarını emülatöre özgü REST uç noktası ile temizleyin.

Emülasyonlu telefon/SMS kimlik doğrulaması

Telefonla kimlik doğrulama için Auth emülatörü şunları desteklemez:

  • reCAPTCHA ve APN akışları. Emülatörle etkileşim kurmak üzere yapılandırıldıktan sonra istemci SDK'lar bu doğrulama yöntemlerini şu uygulamalarda açıklananlara benzer şekilde devre dışı bırakır: entegrasyon testi (iOS, Android, web) kullanıyor.
  • Telefon numaralarını Firebase konsolunda önceden yapılandırılmış kodlarla test edin.

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

Emulator Suite UI kullanılarak:

  1. Emulator Suite UI içinde Authentication (Kimlik Doğrulama) sekmesini tıklayın.
  2. Kullanıcı ekle düğmesini tıklayın.
  3. Telefon kimlik doğrulamasını doldurarak kullanıcı hesabı oluşturma sihirbazını izleyin alanları.

Ancak telefon kimlik doğrulama akışlarında emülatör teslimi TEŞVİK ETMEZ Operatörle iletişime geçmek kapsam dışındadır ve kısa mesaj kullanımı kolay! Bunun yerine emülatör, devre dışı bırakılacak kodu işlemi gerçekleştirdiğiniz terminale SMS ile gönderilmiş olmalıdır firebase emulators:start; Kullanıcıları simüle etmek için bu kodu uygulamaya girin ve kısa mesajlarını kontrol ediyor.

Etkileşimsiz test

Etkileşimli olmayan telefon kimlik doğrulaması testi için Authentication emülatörünü kullanın Kullanılabilir SMS kodlarını almak için REST API. Kodun her adımda farklı olduğunu unutmayın zaman alır.

Tipik adım adım sırası aşağıda verilmiştir.

  1. Doğrulama sürecini başlatmak için signInWithPhoneNumber adlı platformu arayın.
  2. Emülatöre özel REST uç noktasını kullanarak doğrulama kodunu alın.
  3. Doğrulama kodunu göndererek confirmationResult.confirm(code) numaralı telefonu her zamanki gibi arayın.

Çok öğeli SMS

Authentication emülatörü, SMS ile çok faktörlü kimlik prototipini oluşturmayı ve test etmeyi destekler iOS için üretimde kullanılabilen kimlik doğrulama (MFA) akışları Android ve web

Emülatöre bir sahte kullanıcı eklediğinizde MFA'yı etkinleştirebilir ve bir tane yapılandırabilirsiniz veya ikinci faktör SMS mesajlarının gönderileceği daha fazla telefon numarası içerir. Mesajlar çıkışları, firebase emulators:start çalıştırdığınız aynı terminale çıkarsa REST arayüzünden erişilebilir.

Emüle üçüncü taraf kimlik sağlayıcı (IDP) kimlik doğrulaması

Authentication emülatörü, birçok üçüncü taraf kimlik doğrulama akışını hiçbir değişiklik yapmadan iOS, Android veya web uygulamalarınıza. Örnekler için hakkında ayrıntılı bilgi edinmek isterseniz uygulamanızda kullanabileceğiniz sağlayıcı ve platform kombinasyonları.

Genel olarak, tek bir uygulamada kimlik doğrulaması için Firebase SDK'sını iki yöntem vardır:

  • Uygulamanız, SDK'nın aşağıdakiler de dahil olmak üzere tüm süreci uçtan uca yönetmesine izin verir: kimlik bilgilerini almak için üçüncü taraf IdP sağlayıcılarıyla tüm etkileşimler
  • Uygulamanız, bu bağlantıyı kullanarak üçüncü taraf sağlayıcıdan kimlik bilgilerini manuel olarak alıyor tarafın SDK'sını kullanır ve bu kimlik bilgilerini Authentication SDK'sına iletir.

Yukarıdaki belge bağlantısını kontrol edin. Bu bölümde, Firebase SDK'sı tarafından yönetilen veya manuel kimlik bilgisi alma tıklayın. Authentication emülatörü, her iki yaklaşımın da test edilmesini destekler.

Firebase SDK'sına dayalı IdP akışlarını test etme

Uygulamanızda Firebase SDK'sı uçtan uca akış kullanılıyorsa (ör. OAuthProvider Microsoft, GitHub veya Yahoo ile oturum açın, Authentication emülatör, size yardımcı olmak için ilgili oturum açma sayfasının yerel bir sürümünü sunar. signinWithPopup veya signInWithRedirect yöntemi. Yerel olarak sunulan bu oturum açma sayfası şurada da görünür: platformunuzun web görünümü kitaplığı tarafından oluşturulan mobil uygulamalar

Emülatör, gerektiğinde sahte üçüncü taraf kullanıcı hesapları ve kimlik bilgileri oluşturur bu şekilde takip edebilirsiniz.

IDP akışlarını manuel kimlik bilgisi alarak test etme

"Manuel" kullanıyorsanız oturum açma tekniklerini ve platformunuzun signInWithCredentials çağrısını yapın yönteminden sonra, uygulamanız her zamanki gibi gerçek üçüncü taraf oturum açma gerçek üçüncü taraf kimlik bilgilerini alıyor.

Emülatörün yalnızca signInWithCredential kimlik doğrulamasını desteklediğini unutmayın Google ile Oturum Açma, Apple ve diğer sağlayıcılardan alınan kimlik bilgileri için JSON Web Token (JWT) olarak uygulanmış kimlik jetonlarını kullanmalıdır. Erişim jetonları (ör. Facebook veya Twitter tarafından sağlanan, JWT olmayanlar) desteklenir. Bir sonraki bölümde bu durumlarda bir alternatif açıklanmaktadır.

Etkileşimsiz test

Etkileşimsiz testlere yönelik yaklaşımlardan biri, oturum açma sırasında kullanıcı tıklamalarını otomatikleştirmektir. emülatör tarafından sunulan sayfadır. Web uygulamaları için WebDriver'ı tıklayın. Mobilde Espresso gibi platformunuzun kullanıcı arayüzü test araçlarını kullanın. Xcode gibi bir yerdeyiz.

Alternatif olarak, kodunuzu signInWithCredential kullanacak şekilde güncelleyebilirsiniz (ör. bir kod dalında) ve sahte bir jeton kimlik doğrulama akışı kullanın Gerçek kimlik bilgileri yerine hesaplar için kimlik jetonları.

  1. Kodunuzun idToken'ları alan kısmını yeniden kablolayın veya yoruma ekleyin IdP; Böylece, işlem sırasında gerçek kullanıcı adları ve şifreler hem de IDP'deki API kotalarını ve hız sınırlarını zorlar.
  2. İkinci olarak, signInWithCredential Örnek olarak web SDK'sını kullanarak kodunu şu şekilde kullanın:
firebase.auth().signInWithCredential(firebase.auth.GoogleAuthProvider.credential(
  '{"sub": "abc123", "email": "foo@example.com", "email_verified": true}'
));

Emülatörle kullanıldığında bu kod kullanıcının kimliğini başarıyla doğrular Google'da foo@example.com e-postasıyla. Alt alanı birincil anahtar, Bunlar herhangi bir dizeye dönüştürülebilir ve farklı kullanıcıların oturum açmalarını taklit eder. Şunları yapabilirsiniz: firebase.auth.GoogleAuthProvider değerini örneğin, şununla değiştirin: new firebase.auth.OAuthProvider('yahoo.com') veya istediğiniz başka sağlayıcı kimliği örnek verin.

Emülasyonlu özel jeton kimlik doğrulaması

Authentication emülatörü, açıklandığı gibi, desteklenen platformlarda signInWithCustomToken yöntemine yapılan çağrılar üretim Authentication belgelerinde.

Authentication emülatörünün üretimden farkı nedir?

Firebase Authentication emülatörü, üretimin birçok özelliğini simüle eder. belirler. Ancak, herhangi bir kimlik doğrulama sistemi birden fazla düzeyde (cihaz, üçüncü taraf sağlayıcılar, Firebase, vb. gibi), emülatörün tüm akışları düzgün bir şekilde yeniden oluşturması zordur.

Cloud IAM

Firebase Emulator Suite, verileri kopyalamaya veya ona Çalışma için IAM ile ilgili davranış. Emülatörler Firebase Güvenliği'ne bağlıdır Kurallar sağlanır ancak IAM'nin normalde kullanılacağı durumlarda (ör. Cloud Functions'ın hizmet hesabını ve dolayısıyla izinleri çağırmasını sağlar. emülatörü yapılandırılamaz ve şurada genel olarak mevcut hesabı kullanır: yerel bir komut dosyası çalıştırmaya benzer.

Mobil platformlarda, e-posta bağlantısıyla oturum açma işleminde Firebase Dynamic Links kullanılır. Bunun yerine, bu tür tüm bağlantılar (mobil) web platformunda açılır.

Üçüncü taraf oturum açma

Firebase Authentication, üçüncü taraf oturum açma akışları için güvenli kimlik bilgilerini kullanır Google Analytics 360'tan yararlanmaya devam edebilir.

Google ve Apple gibi COPPA Connect sağlayıcılarından gerçek kimlik bilgileri Authentication emülatörü tarafından kabul edilir. COPPA olmayan Connect sağlayıcılarından alınan kimlik bilgileri desteklenmez.

E-posta / SMS ile oturum açma

Üretim uygulamalarında, e-posta ve SMS ile oturum açma akışları eşzamansız bir Kullanıcının alınan bir mesajı kontrol ettiği ve giriş kodu girdiği işlem giriş yapın. Authentication emülatörü hiç e-posta veya SMS göndermiyor ancak yukarıda açıklandığı gibi giriş kodları oluşturur ve bunları, teşvik etmek anlamına gelir.

Emülatör, test telefon numaralarını Firebase konsolu üzerinden yapılabileceği şekilde sabit giriş kodları.

Özel jeton kimlik doğrulaması

Authentication emülatörü, özel anahtarın imzasını veya geçerlilik süresini doğrulamaz jeton. Bu şekilde, el yapımı jetonları kullanabilir ve jetonları yeniden kullanabilirsiniz süresiz olarak devam ettirilebilir.

Oran sınırlama / kötüye kullanımı önleme

Authentication emülatörü, üretim hızı sınırlamasını veya kötüye kullanımı önlemeyi çoğaltmıyor özellikleri.

Engelleme işlevleri

Üretimde, kullanıcılar hem beforeCreate ve beforeSignIn etkinlik tetiklendi. Ancak, teknik sınırlamalar nedeniyle Authentication emülatörü, kullanıcı oluşturulduktan sonra bir kez olmak üzere depolamaya iki kez yazar ve oturum açmanızdan sonra başka bir tane alırsınız. Bu, yeni kullanıcılar için başarılı bir şekilde Authentication emülatöründe beforeSignIn içinde getAuth().getUser(), ancak üretimde bir hatayla karşılaşabilirsiniz.

Sonrasında ne olacak?