2016-06-22 9 views
5

Bu kod snippet'inde (firebase doc) arka uç sunucunuzla kimlik doğrulaması yapmak için user.getUid() işlevini kullanmayın. yerine FirebaseUser.getToken() kullanın.Neden arka uç sunucunuzda firebase kimlik doğrulamasıyla kimlik doğrulaması yapmak için getUid() yöntemini kullanamıyoruz?

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
if (user != null) { 
    // Name, email address, and profile photo Url 
    String name = user.getDisplayName(); 
    String email = user.getEmail(); 
    Uri photoUrl = user.getPhotoUrl(); 

    // The user's ID, unique to the Firebase project. Do NOT use this value to 
    // authenticate with your backend server, if you have one. Use 
    // FirebaseUser.getToken() instead. 
    String uid = user.getUid(); 
} 


getUid() A unique user ID, intended as the user's unique key across all providers. 
getToken() The Firebase authentication token for this session. 

Benim şartımdır.

  1. İlk önce kullanıcıyı firebase kimlik doğrulama yöntemiyle (E-posta ve parola) kaydedeceğim.
  2. Dize kaydedeceğim uid = user.getUid(); Kayıt işlemi başarılı olduğunda kendi arka uç sunucumda. Kullanıcı hesabı bilgileri, kullanıcı tarafından arka uç sunucuma anahtar user.getUid() olarak kaydedilir.
  3. E-posta ve şifre ile giriş yapın ve bakiyesini sorun.
  4. Eşleşme bulundu kullanıcı için denge döndürürse, user.getUid() öğesini firebase'den alıp kayıtlarımla eşleştireceğim.

getUid() 'in benzersiz kullanıcı kimliği olduğunu söylediler, ancak bu değeri arka uç sunucunuzla doğrulamak için KULLANMAYIN.

Neden? Neden backend sunucunuzla kimlik doğrulamak için getUid() kullanamıyoruz?

+0

Sorunuzun cevabını buldunuz mu? Ben tam olarak aynı şeyi yapmayı planlıyorum ve düşünce sürecinde bir sorun bulamadık – Snake

cevap

9

Kullanıcı kimliği, kullanıcı için benzersiz bir tanımlayıcıdır. Dolayısıyla, kullanıcıyı tanımlarken, onları doğrulamaz.

Yığın Taşımı Kimliğimin 209103 olduğu basit bir sonuçtur. Bilirsiniz, beni tanımlayabilirsiniz. Ancak, Taşma Yığını'nı ispatladığınızı kanıtlamak için, Frank van Puffelen, kimlik bilgilerimi bilmenizi gerektirir.

Bir kullanıcının kimliği çoğunlukla arayüzde açığa çıkar. Örneğin, profilimi tıklarsanız kimliğimi görürsünüz. Bu beni tanımlamak için gereklidir. Kimlik doğrulamak için aynı kimliği de kullanırsanız, profilinizi bir kez gören herkes sizi siteye taklit edebilir. Güvenlik söz konusu olduğunda iyi bir fikir değil.

+2

Cevabınız için teşekkürler ve ben sizin noktanızı anlıyorum. İhtiyacım gereği, kullanıcıyı tanımlamak için getUid() öğesini kullanacağım (firebase sistemi ile doğrulandıktan sonra). Nokta # 4. Kullanıcı kredi bilgileri benim backend sunucumla doğrulandıktan sonra, bu kimliği doğrulanmış kullanıcı için getUid() öğesini, DB'mdeki bu getUid() öğesine karşı arama kaydını alıp ona sunacağım. Sorum şu, bu süreçte herhangi bir güvenlik açıklarım var mı? – user3559471

+0

@Frank, kibarca açık bir şekilde, "NewPostActivity" son dizesi userId = getUid(): 'da firebase veritabanı örneklerinde getuid() yorumunu net olarak anlayamadım. getUid her zaman nasıl benzersiz olabilir. – mehmet

+0

@ user3559471 sunucu, uygulamaya güvenemiyor. Sunucu, uygulamanın doğru kullanıcı kimliğini bildirdiğini nasıl biliyor? Sunucu, uygulamanın bütünlüğüne yerleştirilen güveni sınırlamak için belirteç kimliğini kullanabilir. Sunucu, kullanıcı tarafından sadece ince havadan çekilmek yerine, firebase'den kısa bir süre sonra elde edildiğini doğruladıktan sonra, jetonu belirteçten alır. – user650881