Daha önce ASP.Net Identity yapısında tutulan kullanıcıları firebase’e import etmeniz gerekebilir. Bunun için AspNetUsers tablosundaki PasswordHash alanında tutulan base64 verileri bazı işlemlerden geçirerek firebase’ye göstermemiz gerekiyor. Bu işlemler sırasıyla;
- Base64 olan string türündeki şifre byte dizisine dönüştürülür.
- 49 boyutunda bir byte dizisi elde ederiz. Bu dizinin 1. byte’i 0 dır ve yok sayarız. Sonraki 16 byte salt, kalan 32 byte ise passwordHash alanına denk gelir.
Yani;
[ 1.byte, //boş 2.byte..16.byte, //salt alanı 17.byte..49.byte //passwordHash alanı ]
Mantığını anladıktan sonra bu işlemi yapacak olan fonksiyonu paylaşalım 🙂
public static void GetUsersAndWriteJsonFile() { JArray jArray = new JArray(); SqlConnection con = new SqlConnection("Data Source=websrv1; Initial Catalog=PlatformDB; Integrated Security=SSPI;"); SqlCommand cmd = new SqlCommand(); SqlDataReader dr; cmd.CommandText = "SELECT Id, NameSurname, Email, PasswordHash FROM AspNetUsers"; cmd.Connection = con; con.Open(); dr = cmd.ExecuteReader(); while (dr.Read()) { byte[] numArray = Convert.FromBase64String(dr["PasswordHash"].ToString()); byte[] bsalt = new byte[16]; Buffer.BlockCopy((Array)numArray, 1, (Array)bsalt, 0, 16); byte[] bhash = new byte[32]; Buffer.BlockCopy((Array)numArray, 17, (Array)bhash, 0, 32); string salt = Convert.ToBase64String(bsalt); string passwordHash = Convert.ToBase64String(bhash); dynamic jo = new JObject(); jo.localId = dr["Id"].ToString(); jo.email = dr["Email"].ToString(); jo.emailVerified = false; jo.passwordHash = passwordHash; jo.salt = salt; jo.displayName = dr["NameSurname"].ToString(); jArray.Add(jo); } dr.Close(); con.Close(); dynamic jsonObject = new JObject(); jsonObject.users = jArray; File.WriteAllText(@"c:\users.json", jsonObject.ToString()); }
Yukarıdaki kodu c# console uygulaması olarak açıp, connectionString bilgilerinizi değiştirip çalıştırırsanız c:\users.json dosyasını sizin için oluşturacaktır.
Son olarak firebase’e bu json dosyasını göstererek kullanıcıları yüklemek kaldı. Bunun için gerekli yüklemeleri yaparak bir firebase projesi oluşturalım.
Sırayla aşağıdaki komutları çalıştırıyoruz.
npm install -g firebase-tools
firebase login
firebase auth:import c:\users.json –hash-algo=PBKDF_SHA1 –rounds=1000
Diğer firebase komutlarını görmek için: firebase use –help
Firebase console detaylar için;
https://firebase.google.com/docs/cli/auth