Firebase Projelerindeki Kullanıcılar

Firebase kullanıcı nesnesi, projenizdeki bir uygulamaya kaydolmuş bir kullanıcı hesabını temsil eder. Uygulamaların genellikle çok sayıda kayıtlı kullanıcısı vardır ve bir projedeki her uygulama bir kullanıcı veritabanını paylaşır.

Kullanıcı örnekleri Firebase Authentication örneklerinden bağımsız olduğundan, aynı bağlamda farklı kullanıcılara yönelik çeşitli referanslara sahip olabilir ve yine de bunların yöntemlerinden herhangi birini çağırabilirsiniz.

Kullanıcı özellikleri

Firebase kullanıcıları, projenin kullanıcı veritabanında saklanan ve kullanıcı ( iOS , Android , web ) tarafından güncellenebilen, benzersiz bir kimlik, birincil e-posta adresi, ad ve fotoğraf URL'si gibi sabit bir dizi temel özelliğe sahiptir. Kullanıcı nesnesine doğrudan başka özellikler ekleyemezsiniz; bunun yerine ek özellikleri Google Cloud Firestore gibi diğer depolama hizmetlerinde depolayabilirsiniz.

Bir kullanıcı uygulamanıza ilk kez kaydolduğunda kullanıcının profil verileri mevcut bilgiler kullanılarak doldurulur:

  • Kullanıcı bir e-posta adresi ve şifreyle kaydolduysa yalnızca birincil e-posta adresi özelliği doldurulur
  • Kullanıcı, Google veya Facebook gibi bir birleşik kimlik sağlayıcıya kaydolduysa, sağlayıcının sunduğu hesap bilgileri kullanıcının profilini doldurmak için kullanılır
  • Kullanıcı özel kimlik doğrulama sisteminizle kaydolduysa istediğiniz bilgileri kullanıcının profiline açıkça eklemeniz gerekir.

Bir kullanıcı hesabı oluşturulduktan sonra, kullanıcının başka bir cihazda yapmış olabileceği değişiklikleri dahil etmek için kullanıcı bilgilerini yeniden yükleyebilirsiniz.

Oturum açma sağlayıcıları

Çeşitli yöntemleri kullanarak kullanıcıları uygulamalarınızda oturum açabilirsiniz: e-posta adresi ve parola, birleştirilmiş kimlik sağlayıcıları ve özel kimlik doğrulama sisteminiz. Bir kullanıcıyla birden fazla oturum açma yöntemini ilişkilendirebilirsiniz: örneğin, bir kullanıcı aynı hesapta bir e-posta adresi ve şifre kullanarak veya Google ile Oturum Açma'yı kullanarak oturum açabilir.

Kullanıcı örnekleri, kullanıcıya bağlı her sağlayıcının kaydını tutar. Bu, bir sağlayıcı tarafından verilen bilgileri kullanarak boş profilin özelliklerini güncellemenize olanak tanır. Bkz. Kullanıcıları Yönetme ( iOS , Android , web ).

Geçerli kullanıcı

Bir kullanıcı kaydolduğunda veya oturum açtığında, bu kullanıcı Auth örneğinin geçerli kullanıcısı olur. Örnek kullanıcının durumunu korur, böylece sayfayı yenilemek (tarayıcıda) veya uygulamayı yeniden başlatmak kullanıcının bilgilerini kaybetmez.

Kullanıcı oturumu kapattığında Auth örneği, kullanıcı nesnesine yönelik bir referansı saklamayı bırakır ve artık durumunu sürdürmez; mevcut kullanıcı yok. Ancak kullanıcı örneği tamamen işlevsel olmaya devam eder: ona bir referansı korursanız yine de kullanıcı verilerine erişebilir ve bunları güncelleyebilirsiniz.

Kullanıcı yaşam döngüsü

Auth örneğinin geçerli durumunu izlemenin önerilen yolu dinleyicileri (JavaScript'te "gözlemciler" olarak da adlandırılır) kullanmaktır. Auth nesnesiyle ilgili bir şey olduğunda Auth dinleyicisi bilgilendirilir. Bkz. Kullanıcıları Yönetme ( iOS , Android , web ).

Auth dinleyicisi aşağıdaki durumlarda bildirim alır:

  • Auth nesnesinin başlatılması tamamlanır ve kullanıcı önceki bir oturumdan zaten oturum açmıştır veya bir kimlik sağlayıcının oturum açma akışından yeniden yönlendirilmiştir
  • Bir kullanıcı oturum açar (geçerli kullanıcı ayarlanır)
  • Kullanıcı oturumu kapatır (geçerli kullanıcı boş olur)
  • Geçerli kullanıcının erişim belirteci yenilenir. Bu durum aşağıdaki durumlarda gerçekleşebilir:
    • Erişim belirtecinin süresinin dolması: Bu yaygın bir durumdur. Yenileme belirteci, yeni ve geçerli bir belirteç kümesi elde etmek için kullanılır.
    • Kullanıcı şifresini değiştirir: Firebase yeni erişim ve yenileme jetonları yayınlar ve eski jetonların süresinin dolmuş olmasını sağlar. Bu, güvenlik nedeniyle kullanıcının belirtecinin geçerliliğini otomatik olarak sona erdirir ve/veya kullanıcının her cihazdaki oturumunu kapatır.
    • Kullanıcı yeniden kimlik doğrulaması yapar: bazı işlemler kullanıcının kimlik bilgilerinin yakın zamanda verilmesini gerektirir; bu tür eylemler arasında bir hesabın silinmesi, birincil bir e-posta adresi belirlenmesi ve bir şifrenin değiştirilmesi yer alır. Kullanıcının oturumunu kapatıp tekrar oturum açmak yerine, kullanıcıdan yeni kimlik bilgileri alın ve yeni kimlik bilgilerini kullanıcı nesnesinin yeniden kimlik doğrulama yöntemine iletin.

Kullanıcı self servis

Varsayılan olarak Firebase, kullanıcıların yönetici müdahalesi olmadan kaydolmasına ve hesaplarını silmesine olanak tanır. Çoğu durumda bu, son kullanıcıların uygulamanızı veya hizmetinizi yerleşik (veya yerleşik olmayan) olarak minimum sorunla keşfetmesine olanak tanır.

Ancak kullanıcıların Yönetici SDK'sı veya Firebase konsolu kullanılarak bir yönetici tarafından manuel veya programlı olarak oluşturulmasını istediğiniz durumlar vardır. Bu durumlarda, Firebase Kimlik Doğrulama Ayarları sayfasından kullanıcı işlemlerini devre dışı bırakabilirsiniz; bu, hesap oluşturmayı ve son kullanıcılar tarafından silinmesini engeller. Çoklu kiracılık kullanıyorsanız bu özellikleri kiracı bazında devre dışı bırakmak için bir HTTP isteğinde bulunmanız gerekecektir.

Bir son kullanıcı sisteminizde bir hesap oluşturmaya veya silmeye çalışırsa Firebase hizmeti bir hata kodu döndürür: Web API çağrıları için auth/admin-restricted-operation veya Android ve iOS için ERROR_ADMIN_RESTRICTED_OPERATION . Kullanıcıdan hizmetiniz için uygun işlemleri yapmasını isteyerek, ön uçtaki hatayı incelikli bir şekilde ele almalısınız.

Kimlik doğrulama jetonları

Firebase ile kimlik doğrulama gerçekleştirdiğinizde karşılaşabileceğiniz üç tür kimlik doğrulama belirteci vardır:

Firebase kimliği jetonları Bir kullanıcı bir uygulamada oturum açtığında Firebase tarafından oluşturulur. Bu belirteçler, bir Firebase projesindeki kullanıcıyı güvenli bir şekilde tanımlayan imzalı JWT'lerdir. Bu belirteçler, kullanıcının Firebase projesine özgü olan kimlik dizesi de dahil olmak üzere temel profil bilgilerini içerir. Kimlik belirteçlerinin bütünlüğü doğrulanabildiğinden , oturum açmış olan kullanıcıyı tanımlamak için bunları bir arka uç sunucusuna gönderebilirsiniz.
Kimlik sağlayıcı belirteçleri Google ve Facebook gibi birleşik kimlik sağlayıcıları tarafından oluşturulmuştur. Bu belirteçler farklı formatlara sahip olabilir ancak genellikle OAuth 2.0 erişim belirteçleridir. Uygulamalar, bu belirteçleri, kullanıcıların kimlik sağlayıcıyla başarıyla kimlik doğrulaması yaptığını doğrulamak ve ardından bunları Firebase hizmetleri tarafından kullanılabilen kimlik bilgilerine dönüştürmek için kullanır.
Firebase özel jetonları Kullanıcıların, kimlik doğrulama sisteminizi kullanarak bir uygulamada oturum açmasına olanak sağlamak için özel kimlik doğrulama sisteminiz tarafından oluşturulur. Özel belirteçler, bir hizmet hesabının özel anahtarı kullanılarak imzalanan JWT'lerdir. Uygulamalar bu belirteçleri, birleştirilmiş kimlik sağlayıcılarından döndürülen belirteçleri kullandıkları gibi kullanır.

Doğrulanmış e-posta adresleri

Firebase, iki koşulu karşılayan bir e-postayı doğrulanmış olarak kabul eder:

  1. Kullanıcı Firebase doğrulama akışını tamamlar
  2. E-posta güvenilir bir Kimlik Sağlayıcı veya kısaca IdP tarafından doğrulanır.

E-postayı bir kez doğrulayan, ancak daha sonra kullanıcıların yeniden doğrulama gerektirmeden e-posta adreslerini değiştirmesine izin veren IdP'lere güvenilmez. Alanın sahibi olan veya her zaman doğrulama gerektiren IdP'ler güvenilir olarak kabul edilir.

Güvenilir sağlayıcılar:

  • Google (@gmail.com adresleri için)
  • Yahoo (@yahoo.com adresleri için)
  • Microsoft (@outlook.com ve @hotmail.com adresleri için)
  • Apple (hesaplar her zaman doğrulandığından ve çok faktörlü kimlik doğrulaması yapıldığından her zaman doğrulanır)

Güvenilmeyen sağlayıcılar:

  • Facebook
  • heyecan
  • GitHub
  • Söz konusu Kimlik Sağlayıcı tarafından verilmeyen alanlar için Google, Yahoo ve Microsoft
  • E-posta doğrulaması olmadan E-posta / Şifre

Bazı durumlarda, kullanıcı aynı e-posta adresini kullanarak farklı sağlayıcılarda oturum açtığında Firebase hesapları otomatik olarak bağlar. Ancak bu yalnızca belirli kriterlerin karşılanması durumunda gerçekleşebilir. Nedenini anlamak için şu durumu göz önünde bulundurun: Bir kullanıcı Google'ı kullanarak @gmail.com hesabıyla oturum açıyor ve kötü niyetli bir kişi aynı @gmail.com adresini kullanarak ancak Facebook aracılığıyla oturum açıyor. Bu iki hesap otomatik olarak bağlanırsa kötü niyetli kişi kullanıcının hesabına erişim elde edebilir.

Aşağıdaki durumlar, hesapları ne zaman otomatik olarak bağladığımızı ve kullanıcı veya geliştirici eylemi gerektiren bir hata oluşturduğumuzu açıklamaktadır:

  • Kullanıcı güvenilmeyen bir sağlayıcıyla oturum açar, ardından aynı e-postayla başka bir güvenilmeyen sağlayıcıyla oturum açar (örneğin, Facebook ve ardından GitHub). Bu, hesap bağlamayı gerektiren bir hataya neden olur.
  • Kullanıcı güvenilir bir sağlayıcıyla oturum açar, ardından aynı e-postayla güvenilmeyen sağlayıcıyla oturum açar (örneğin, Google ve ardından Facebook). Bu, hesap bağlamayı gerektiren bir hataya neden olur.
  • Kullanıcı güvenilmeyen bir sağlayıcıyla oturum açar, ardından aynı e-postayla güvenilir bir sağlayıcıyla oturum açar (örneğin, Facebook ve ardından Google). Güvenilir sağlayıcı, güvenilmeyen sağlayıcının üzerine yazar. Kullanıcı Facebook ile tekrar giriş yapmayı denerse hesap bağlamayı gerektiren bir hataya neden olur.
  • Kullanıcı güvenilir bir sağlayıcıyla oturum açar, ardından aynı e-postayla farklı bir güvenilir sağlayıcıyla (örneğin, Apple ve ardından Google) oturum açar. Her iki sağlayıcı da hatasız olarak bağlanacaktır.

Yönetici SDK'sını kullanarak bir e-postayı manuel olarak doğrulanmış olarak ayarlayabilirsiniz, ancak bunu yalnızca kullanıcının e-postanın gerçekten sahibi olduğunu biliyorsanız yapmanızı öneririz.