Kimlik Doğrulama öykünücüsünü uygulamanızla birlikte kullanmadan önce, genel Firebase Local Emulator Suite iş akışını anladığınızdan ve Local Emulator Suite'i kurup yapılandırdığınızdan ve CLI komutlarını gözden geçirdiğinizden emin olun.
Bu konuda, üretim için Firebase Kimlik Doğrulaması çözümleri geliştirmeye zaten aşina olduğunuz varsayılmaktadır. Gerekirse, platform ve kimlik doğrulama tekniği kombinasyonunuz için belgeleri inceleyin.
Kimlik Doğrulama emülatörü ile ne yapabilirim?
Kimlik Doğrulama öykünücüsü, Firebase Kimlik Doğrulaması üretiminde 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/şifre, telefon numarası/SMS, SMS çok faktörlü ve üçüncü taraf (ör. Google) kimlik sağlayıcı kimlik doğrulamasını test etmek 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
- Prototip özel belirteç kimlik doğrulama sistemleri
- Emulator UI Günlükleri sekmesinde kimlik doğrulamayla ilgili mesajları kontrol edin.
Bir Firebase projesi seçin
Firebase Local Emulator Suite, ürünleri tek bir Firebase projesi için taklit eder.
Kullanılacak projeyi seçmek için, öykünücüleri başlatmadan önce, CLI'da çalışma dizininizdeki firebase use
. Veya --project
bayrağını her emülatör komutuna iletebilirsiniz.
Local Emulator Suite, gerçek Firebase projelerinin ve demo projelerinin emülasyonunu destekler.
Proje tipi | Özellikler | Emülatörlerle kullanın |
---|---|---|
Gerçek | Gerçek bir Firebase projesi sizin oluşturup yapılandırdığınız projedir (büyük olasılıkla Firebase konsolu aracılığıyla). Gerçek projeler, veritabanı örnekleri, depolama grupları, işlevler veya o Firebase projesi için ayarladığınız 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ı eşgörünümü, depolama grubu, işlev vb.) etkileşime girer. |
Demo | Bir demo Firebase projesinde gerçek bir Firebase yapılandırması ve canlı kaynak yoktur. Bu projelere genellikle kod laboratuvarları veya diğer öğreticiler aracılığıyla erişilir. Demo projeleri için proje kimliklerinde | Demo Firebase projeleriyle çalışırken, uygulamalarınız ve kodunuz yalnızca emülatörlerle etkileşime girer. Uygulamanız, öykünücünün çalışmadığı bir kaynakla etkileşime girmeye ç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 öykünülmemiş (üretim) kaynakları çalıştırırsa veri değişikliği, kullanım ve faturalandırma şansı olmaz
- SDK yapılandırmanızı indirmek için internete erişmeniz gerekmediğinden daha iyi çevrimdışı destek.
Öykünücüyle konuşmak için uygulamanızı kullanın
Android, iOS ve web SDK'ları
Uygulama içi yapılandırmanızı veya test sınıflarınızı, Kimlik Doğrulama emülatörüyle aşağıdaki gibi etkileşime girecek şekilde ayarlayın.
Kotlin+KTX
Firebase.auth.useEmulator("10.0.2.2", 9099)
Java
FirebaseAuth.getInstance().useEmulator("10.0.2.2", 9099);
Süratli
Auth.auth().useEmulator(withHost:"localhost", port:9099)
Web modular API
import { getAuth, connectAuthEmulator } from "firebase/auth"; const auth = getAuth(); connectAuthEmulator(auth, "http://localhost:9099");
Web namespaced API
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şimlerin prototipini oluşturmak 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 Admin SDK'ları, FIREBASE_AUTH_EMULATOR_HOST
ortam değişkeni ayarlandığında, Kimlik Doğrulama öykünücüsüne otomatik olarak bağlanır.
export FIREBASE_AUTH_EMULATOR_HOST="localhost:9099"
Bulut İşlevleri ö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 Admin SDK 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.
Admin SDK kodunuzun başka bir ortamda çalışan paylaşılan bir öykünücüye bağlanmasını istiyorsanız, Firebase CLI'yi kullanarak ayarladığınız aynı proje kimliğini belirtmeniz gerekir. 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 Jetonları
Güvenlik nedenleriyle Kimlik Doğrulama öykünücüsü, yalnızca diğer Firebase öykünücüleri veya yapılandırıldığında Firebase Admin SDK tarafından kabul edilen imzasız kimlik belirteçleri verir. Bu belirteçler, üretim modunda çalışan Firebase Admin SDK'sı veya üretim Firebase hizmetleri tarafından reddedilecektir (ör. yukarıda açıklanan kurulum adımları olmadan varsayılan davranış).
Emülatörü başlat
Kimlik Doğrulama öykünücüsünü, Emulator Suite UI aracılığıyla etkileşimli olarak ve yerel REST arabirimi aracılığıyla etkileşimsiz olarak kullanabilirsiniz. Aşağıdaki bölümler, etkileşimli ve etkileşimli olmayan kullanım durumlarını kapsar.
Kimlik Doğrulama öykünücüsünü, REST arabirimini ve Emulator Suite kullanıcı arabirimini başlatmak için şunu yürütün:
firebase emulators:start
Öykünülmüş e-posta, e-posta bağlantısı ve anonim kimlik doğrulama
Anonim kimlik doğrulaması için uygulamanız, platformunuz ( iOS , Android , web ) için oturum açma mantığını kullanabilir.
E-posta/parola kimlik doğrulaması için , Authentication SDK yöntemlerini veya Emulator Suite kullanıcı arayüzünü kullanarak uygulamanızdan Authentication öykünücüsüne kullanıcı hesapları ekleyerek prototip oluşturmaya başlayabilirsiniz.
- Emulator Suite kullanıcı arayüzünde Kimlik Doğrulama sekmesine tıklayın.
- Kullanıcı ekle düğmesini tıklayın.
- 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 için ( iOS , Android , web ) SDK mantığıyla kullanıcının oturumunu açıp kapatabilir.
E-posta doğrulamasını/e-posta bağlantısı akışlarıyla oturum açmayı test etmek için emülatör, firebase emulators:start
yürütüldüğü terminale bir URL yazdırır.
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ü, terminale newPassword parametresi (gerektiğinde değiştirebileceğiniz) dahil olmak üzere benzer bir URL yazdırır.
http://localhost:9099/emulator/action?mode=resetPassword&oobCode=XYZ!23&apiKey=fake-api-key&newPassword=YOUR_NEW_PASSWORD
Etkileşimsiz test
E-posta/parola kullanıcı hesaplarını yönetmek için Emulator Suite kullanıcı arabirimini veya istemci kodunu kullanmak yerine, kullanıcı hesapları oluşturmak ve silmek için REST API'lerini çağıran ve öykünücü e-posta doğrulamasını doldurmak için bant dışı e-posta doğrulama kodlarını getiren test kurulum komut dosyaları yazabilirsiniz. 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 parola testi akışları için tipik sıralama aşağıdaki gibidir.
- Kimlik Doğrulama kaydı REST bitiş noktasıyla kullanıcılar oluşturun.
- Testleri gerçekleştirmek için e-postaları ve parolaları kullanarak kullanıcıların oturumunu açın.
- Testleriniz için uygunsa, öykünücüye özgü REST uç noktasından mevcut bant dışı e-posta doğrulama kodlarını alın.
- Verileri temizlemek için kullanıcı kayıtlarını öykünücüye özgü REST uç noktasıyla temizleyin.
Öykünülmüş telefon/SMS kimlik doğrulaması
Telefon kimlik doğrulaması için Kimlik Doğrulama öykünücüsü şunları desteklemez:
- reCAPTCHA ve APN akışları. Öykünücüyle etkileşime girecek şekilde yapılandırıldıktan sonra, istemci SDK'ları bu doğrulama yöntemlerini entegrasyon testi için açıklanana benzer bir şekilde ( iOS , Android , web ) 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 için açıklananla aynıdır ( iOS , Android , web ).
Emulator Suite Kullanıcı Arayüzünü Kullanma:
- Emulator Suite kullanıcı arayüzünde Kimlik Doğrulama sekmesine tıklayın.
- Kullanıcı ekle düğmesini tıklayın.
- Telefon doğrulama alanlarını doldurarak kullanıcı hesabı oluşturma sihirbazını izleyin.
Bununla birlikte, telefon kimlik doğrulama akışları için, öykünücü herhangi bir metin mesajının teslimini TETİKLEMEYECEKTİR, çünkü bir operatörle iletişim kurmak kapsam dışındadır ve yerel test için uygun değildir! Bunun yerine öykünücü, SMS yoluyla gönderilecek olan kodu firebase emulators:start
; Metin mesajlarını kontrol eden kullanıcıları simüle etmek için bu kodu uygulamaya girin.
Etkileşimsiz test
Etkileşimli olmayan telefon kimlik doğrulama testi için, kullanılabilir SMS kodlarını almak üzere Kimlik Doğrulama emülatörü REST API'sini kullanın. Akışı her başlattığınızda kodun farklı olduğunu unutmayın.
Tipik sıra aşağıdaki gibidir.
- Doğrulama sürecini başlatmak için platform
signInWithPhoneNumber
arayın. - Öykünücüye özgü REST uç noktasını kullanarak doğrulama kodunu alın.
- Doğrulama koduyla her zamanki gibi
confirmationResult.confirm(code)
öğesini arayın.
Çok faktörlü SMS
Kimlik Doğrulama öykünücüsü, iOS , Android ve web için üretimde bulunan SMS çok faktörlü kimlik doğrulama (MFA) akışlarının prototipini oluşturmayı ve test etmeyi destekler.
Öykünücüye sahte bir kullanıcı eklediğinizde, MFA'yı etkinleştirebilir ve ikinci faktör SMS mesajlarının gönderileceği bir veya daha fazla telefon numarasını yapılandırabilirsiniz. Mesajlar, firebase emulators:start
çalıştırdığınız aynı terminale gönderilir ve REST arayüzünden erişilebilir.
Ö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ının belgelerine bakın.
Genel olarak, kimlik doğrulaması yapmak için Firebase SDK'sını iki yoldan biriyle kullanabilirsiniz:
- Uygulamanız, kimlik bilgilerini almak için üçüncü taraf IDP sağlayıcılarıyla olan 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ı kullanarak 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 veya manuel kimlik bilgisi alma) 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çmaya yönelik OAuthProvider
gibi herhangi bir Firebase SDK uçtan uca akışı kullanıyorsa Kimlik Doğrulama emülatörü, 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 devam ederken gerektiğinde sahte üçüncü taraf kullanıcı hesapları ve kimlik bilgileri oluşturur.
Manuel kimlik bilgisi alma ile IDP akışlarını test etme
"Manuel" oturum açma tekniklerini kullanır ve platformunuzun signInWithCredentials
yöntemini çağırırsanız, her zamanki gibi uygulamanız 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 Simgeleri (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 (örneğin, JWT olmayan Facebook veya Twitter tarafından sağlananlar) desteklenmez. Bir sonraki bölümde bu durumlarda bir alternatif ele alınmaktadır.
Etkileşimsiz 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ı otomatik hale getirmektir. Web uygulamaları için WebDriver gibi bir kontrol arabirimi kullanın. Mobil cihazlar için platformunuzdaki Espresso veya Xcode gibi kullanıcı arabirimi 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.
- Kodunuzun IDP'den idTokens alan kısmını yeniden bağlayın veya yorumlayın; bu, testleriniz sırasında gerçek kullanıcı adlarını ve parolaları girme gereksinimini ortadan kaldırır ve testlerinizi IDP'deki API kotalarından ve hız limitlerinden kurtarır.
- İkinci olarak,
signInWithCredential
için belirteç yerine değişmez bir 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 adresine sahip bir kullanıcının kimliğini başarıyla doğrulayacaktır. Alt alanı, farklı kullanıcılarda oturum açmayla alay eden herhangi bir dizeye dönüştürülebilen birincil anahtar olarak düşünün. firebase.auth.GoogleAuthProvider
, örneğin new firebase.auth.OAuthProvider('yahoo.com')
ile veya takmak istediğiniz başka bir sağlayıcı kimliğiyle değiştirebilirsiniz.
Öykünülmüş özel belirteç kimlik doğrulaması
Kimlik Doğrulama öykünücüsü, üretim Kimlik Doğrulaması belgelerinde açıklandığı gibi, desteklenen platformlarda signInWithCustomToken
yöntemine yapılan çağrıları kullanarak özel JSON Web Belirteçleri ile kimlik doğrulamasını işler.
Kimlik Doğrulama öykünücüsünün üretimden farkı nedir?
Firebase Kimlik Doğrulama ö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 çok 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 uyar, ancak örneğin, hizmet hesabını ve dolayısıyla izinleri çağıran Bulut İşlevlerini ayarlamak için IAM'nin normalde 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 cihazda e-posta bağlantısı ile oturum açın
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 Authentication, Twitter ve Github gibi üçüncü taraf sağlayıcıların güvenli kimlik bilgilerine dayanır.
Google ve Apple gibi OpenID Connect sağlayıcılarından alınan gerçek kimlik bilgileri, Kimlik Doğrulama emülatörü tarafından kabul edilir. OpenID olmayan Connect sağlayıcılarından alınan kimlik bilgileri desteklenmez.
E-posta / SMS girişi
Ü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 arayüzüne bir oturum açma kodu girdiği eşzamansız 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ı tanımlama özelliğini desteklemez.
Özel belirteç kimlik doğrulaması
Kimlik Doğrulama öykünücüsü, özel belirteçlerin imzasını veya sona erme tarihini doğrulamaz. Bu, el yapımı jetonları kullanmanıza ve jetonları prototip oluşturma ve test senaryolarında süresiz olarak yeniden kullanmanıza olanak tanır.
Oran sınırlama / kötüye kullanım önleme
Kimlik Doğrulama öykünücüsü, üretim hızı sınırlayıcı veya kötüye kullanımı önleme özelliklerini çoğaltmaz.
Engelleme işlevleri
Üretimde, kullanıcılar, hem beforeCreate
hem de beforeSignIn
olayları tetiklendikten sonra depolamaya yazılır. Ancak, teknik sınırlamalar nedeniyle Kimlik Doğrulama emülatörü, biri kullanıcı oluşturulduktan sonra ve diğeri oturum açtıktan sonra olmak üzere iki kez depolamak için yazar. Bu, yeni kullanıcılar için, Kimlik Doğrulama öykünücüsünde beforeSignIn
getAuth().getUser()
başarılı bir şekilde çağırabileceğiniz, ancak bunu yaparken üretimde bir hatayla karşılaşacağınız anlamına gelir.
Sırada ne var?
Seçilmiş bir dizi video ve ayrıntılı nasıl yapılır örnekleri için Firebase Emülatörleri Eğitim Oynatma Listesi'ni izleyin.
Tetiklenen işlevler, Kimlik Doğrulama ile tipik bir entegrasyon olduğundan, İşlevleri yerel olarak çalıştır bölümünde Firebase öykünücüsü için Bulut İşlevleri hakkında daha fazla bilgi edinin.