Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

Size uygulama ile Kimlik Doğrulama emülatörü kullanmadan önce, emin olun genel Firebase Yerel Emülatörü Suite iş akışını anlama ve bunu yüklemek ve yapılandırmak Yerel Emülatörü Suite ve onun gözden CLI komutlarını .

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

Doğrulama emülatörü çok bulunan işlevsellik sağlayan Firebase Kimlik hizmetlerinin yüksek sadakat yerel emülasyonu sağlayan üretim Firebase Kimlik . 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 testi ve üçüncü taraf kimlik sağlayıcılarla (Google gibi) oturum açmak için öykünülmüş 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.

Eğer CLI koşmak içinde, emülatörler başlamadan önce, kullanımına projeyi seçmek için firebase use için çalışma dizininde. Veya, geçebilir --project her emülatör komutuna bayrağı.

Yerel Emulator Suite gerçek Firebase projeleri ve demo projelerin öykünme destekler.

Proje tipi Özellikleri 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.

Eğer taklit etmiyorsunuz herhangi ürünlerde, uygulamalar ve kod canlı kaynak (veritabanı örneği, depolama kovası, fonksiyonu, vb) ile etkileşim olacaktır.

Demo

Bir demo Firebase projesi gerçek Firebase yapılandırma ve hiçbir canlı kaynaklara sahiptir. Bu projelere genellikle kod laboratuvarları veya diğer öğreticiler aracılığıyla erişilir.

Demo projeler için Proje kimlikleri var demo- önek.

Demo Firebase projeleri uygulamalarınıza ve sadece benzeticileri olan kod etkileştiği ile çalışırken. 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 sürümü 9

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

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

Web sürümü 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'sı

Zaman Firebase Yönetici SDK otomatik Doğrulama emülatörü bağlanır FIREBASE_AUTH_EMULATOR_HOST ortam değişkeni ayarlanı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 ayarlanır.

Ortam değişkeni ayarlandığında, Firebase Yönetici SDK'larını (üzerinden kimlik emülatörü tarafından verilen imzasız kimlik Simgeleri ve oturum çerezleri kabul edecek verifyIdToken ve createSessionCookie yerel developmemt ve test kolaylaştırmak için sırasıyla yöntemlerle). Üretimde ortam değişkeni ayarlamak için değil emin olun.

Kimlik Doğrulama öykünücüsüne bağlanırken bir proje kimliği belirtmeniz gerekecektir. Sen bir proje kimliğine geçebilir initializeApp doğrudan veya set GCLOUD_PROJECT ortam değişkeni. Gerçek Firebase proje kimliğinizi kullanmanız gerekmediğini unutmayın; Kimlik Doğrulama öykünücüsü herhangi bir proje kimliğini kabul edecektir.

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 emülatörü sorunları imzasız kimlik belirteçleri, sadece diğer Firebase emülatörleri tarafından kabul edilir, ya da Firebase Yönetici SDK zaman yapılandırılmış . 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ğrulaması için, uygulama platformu (tabelasını mantığını egzersiz yapabilirsiniz iOS , Android , web ).

E-posta / şifre doğrulaması için,, kimlik SDK yöntemleri kullanarak uygulamanızdan Doğrulama emülatörü kullanıcı hesaplarını ekleyerek veya Emülatörü Suite UI kullanarak prototip başlayabilirsiniz.

  1. Emülatörü Suite arayüzünde Kimlik sekmesini tıklatı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.

Bir test kullanıcının oluşturduğu sayesinde, uygulama içinde ve platformu (SDK mantığı ile dışarı kullanıcıyı giriş yapabilirsiniz iOS , Android , web ).

Test için e-posta doğrulama / oturum açma e-posta bağlantısı akar ile, emülatör hangi terminale bir URL yazdırır firebase emulators:start infaz edildi.

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"
  }
}

Şifre sıfırlar test için emülatör terminali için bir YeniParola parametresi (gerektiğinde değiştirmek olabilir) 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ş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 kullanıcı oluşturun kaydolma REST son noktası .
  2. Testleri gerçekleştirmek için e-postaları ve şifreleri kullanarak kullanıcılarda oturum açın.
  3. Senin testlere Varsa, temin çıkış bant dışı e-posta doğrulama kodlarını getir emülatör özgü DİNLENME endpont .
  4. İle yıkayın kullanıcı kayıtları emülatörü özgü DİNLENME son nokta temizleme verileri için.

Ö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ı. Emülatör etkileşimde bulunmak üzere yapılandırılan sonra, istemci SDK'ler entegrasyon testi (için tarif edilene benzer bir şekilde bu doğrulama yöntemleri kaldırmak IOS , Android , internet ).
  • Firebase konsolunda önceden yapılandırılmış kodlarla telefon numaralarını test edin.

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

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

  1. Emülatörü Suite arayüzünde Kimlik sekmesini tıklatı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.

Ancak, telefonla kimlik doğrulama akışları için öykünücü, bir operatörle bağlantı kurmak kapsam dışı olduğundan ve yerel test için uygun olmadığından, herhangi bir metin mesajının teslim edilmesini TETİKLEMEZ! Bunun yerine, çalıştırdığınız aynı terminale SMS yoluyla gönderilen olurdu kod dışarı emülatör baskılar 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. Platform Çağrı signInWithPhoneNumber doğrulama işlemini başlatmak için.
  2. Kullanarak doğrulama kodunu Al emülatör özgü DİNLENME bitiş noktası .
  3. Çağrı confirmationResult.confirm(code) doğrulama kodunu içeren her zamanki gibi.

Ö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 değişiklik yapmadan test etmenize olanak tanır. Kimlik doğrulama akışlarının örnekleri için çeşitli belgelere başvurun uygulamanızda kullanabileceğiniz sağlayıcılar ve platformların kombinasyonları .

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 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ı 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 belge bağlantısını kontrol edin ve kullanmak istediğiniz akışa (Firebase SDK tarafından yönetilen ve 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 gibi herhangi Firebase SDK uçtan uca akışını kullanıyorsa OAuthProvider Microsoft, GitHub, ya da Yahoo ile oturum açma için, interaktif test için, Kimlik Doğrulama emülatörü yardım teste karşılık gelen oturum açma sayfasına yerel bir sürümünü vermektedir web'den kimlik o telefonu uygulamaları signinWithPopup veya signInWithRedirect yöntemi. 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

Eğer teknikleri oturum açma "el" kullanmak ve platformun ararsanız signInWithCredentials yöntemi, daha sonra, her zamanki gibi, uygulama gerçek üçüncü taraf oturum açma isteğinde ve gerçek üçüncü taraf kimlik bilgilerini alır.

Emülatörü sadece desteklediğini Not signInWithCredential kullanım kimliği JSON Web Simgeleri (JWTS) olarak uygulanır jetonudur olduğu Google Oturum Açma, Apple, ve diğer sağlayıcılardan alınan kimlik bilgileri kimlik doğrulaması. 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, platformunuzdaki Espresso veya Xcode gibi UI test araçlarını kullanın.

Alternatif olarak, kullanmak için kodunuzu güncelleyebilirsiniz signInWithCredential (bir kod dalında örneğin) ve bunun yerine gerçek kimlik bilgileri hesaplar için sahte kimlik belirteçleri ile bir belirteç kimlik doğrulama akış kullanılır.

  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. İkincisi, için simge yerine bir hazır JSON dizesi kullanmak signInWithCredential . Ö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}'
));

Emülatörü ile kullanıldığında, bu kodu başarıyla e-posta ile bir kullanıcının kimliğini doğrulamak olacaktır foo@example.com Google'da. Alt alanı, farklı kullanıcılarda oturum açmayı taklit eden herhangi bir dizeyle değiştirilebilen birincil anahtar olarak düşünün. Sen değiştirebilirsiniz firebase.auth.GoogleAuthProvider örneğin, birlikte new firebase.auth.OAuthProvider('yahoo.com') ya da alay etmek istediğiniz diğer sağlayıcı kimliği.

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 ç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ışı çoğaltmaya veya bunlara uymaya çalışmaz. Öykünücüler sağlanan Firebase Güvenlik Kurallarına bağlıdır, ancak örneğin Bulut İşlevleri'ni ç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ılabilir değildir 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. Doğrulama emülatörü tüm e-postaları veya SMS mesajları göndermek değil, ama açıklandığı gibi yukarıda , bu test kullanılmak üzere terminali için kodları ve çıkış onları giriş oluşturmak gelmez.

Ö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ırada ne var?