Bermigrasi dari Google Identity Toolkit ke Firebase Authentication

Versi terbaru Google Identity Toolkit telah dirilis sebagai Firebase Authentication. Ke depannya, fungsi fitur di Identity Toolkit akan dihentikan dan semua fitur baru pengembangan fitur akan dilakukan pada Firebase Authentication. Sebaiknya Developer Identity Toolkit akan segera beralih ke Firebase Authentication praktis untuk aplikasinya; tetapi, Identity Toolkit akan terus berfungsi dan tidak akan digunakan lagi tanpa pengumuman lebih lanjut.

Fitur Baru

Firebase Authentication telah memiliki beberapa peningkatan fitur signifikan dibandingkan Google Identity Toolkit:

  • Akses ke semua Firebase

    Firebase adalah platform seluler yang membantu Anda mengembangkan aplikasi berkualitas tinggi mengembangkan basis pengguna, dan menghasilkan lebih banyak uang. Firebase terdiri dari fitur pelengkap yang dapat Anda padu padankan sesuai dengan kebutuhan dan mencakup infrastruktur untuk: analytics seluler, cloud messaging, database realtime, penyimpanan file, hosting statis, konfigurasi jarak jauh, pelaporan error seluler dan Pengujian Android.

  • UI yang diperbarui

    Kami telah membangun kembali alur UI sepenuhnya berdasarkan pengalaman pengguna penelitian. Hal ini mencakup pemulihan sandi, penautan akun, pengguna baru/yang sudah ada alur disambiguasi akun yang sering kali membutuhkan waktu lama untuk membuat kode dan men-debug. Alat ini mengintegrasikan Smart Lock untuk Sandi di Android, yang secara signifikan meningkatkan konversi login dan pendaftaran untuk aplikasi yang berpartisipasi. Ini juga mendukung modifikasi tema yang mudah agar sesuai dengan aplikasi Anda dan, untuk kemampuan penyesuaian maksimum, Android dan iOS telah menjadi {i>open source<i}.

  • Penyiapan server yang disederhanakan

    Kami telah memudahkan developer menggunakan Firebase Authentication. Dengan Identity Toolkit, kami melihat bahwa banyak developer memilih untuk tidak menerapkan alur pemulihan email yang membuat pengguna mereka tidak bisa memulihkan akun mereka jika mereka lupa {i>password<i} mereka. Firebase Authentication dapat mengirim pesan verifikasi email, {i>password<i} dan mengubah {i>password<i} ke pengguna dan teks dapat dengan mudah disesuaikan ketersediaan tinggi dan latensi yang lebih rendah bagi pengguna Anda. Selain itu, Anda tidak perlu lagi menghosting Widget UI untuk pengalihan hosting dan untuk menyelesaikan operasi perubahan {i>password<i}.

  • Konsol admin baru

    Firebase memiliki konsol developer baru dan bagian Autentikasi memungkinkan Anda untuk melihat, mengubah, dan menghapus pelanggan. Hal ini dapat sangat membantu dalam men-debug alur login dan pendaftaran Anda. Konsol juga memungkinkan Anda untuk mengonfigurasi metode otentikasi dan menyesuaikan template email.

  • SDK baru

    Semua API server Identity Toolkit kini tersedia secara native dengan dari library klien kita (Android, iOS, web). Developer akan dapat menandatangani dan mendaftarkan pengguna lama dan baru, mengakses properti pengguna, menautkan, memperbarui, menghapus akun, mereset sandi, dan lain-lain tanpa terikat dengan UI yang tetap. Jika mau, Anda dapat membuat keseluruhan alur login Anda sendiri secara manual dan pengalaman tambahan selain API ini.

  • Pengelolaan sesi untuk aplikasi seluler

    Dengan Identity Toolkit, aplikasi membuat status sesinya sendiri berdasarkan peristiwa autentikasi awal dari Identity Toolkit. Firebase Auth menggunakan sebuah layanan backend yang mengambil token refresh, yang dicetak dari autentikasi {i>event<i}, dan menukarnya dengan token akses selama satu jam untuk Android, iOS, dan pada JavaScript. Jika pengguna mengubah sandinya, token refresh tidak akan menghasilkan token akses baru, sehingga menonaktifkan akses sampai pengguna melakukan otentikasi pada perangkat tersebut.

  • Autentikasi anonim dan GitHub

    Firebase Authentication mendukung dua jenis autentikasi baru: GitHub dan anonim. Login anonim dapat digunakan untuk membuat ID pengguna unik tanpa mengharuskan pengguna untuk melalui proses {i>login<i} atau pendaftaran. Dengan anonim, Anda sekarang dapat melakukan panggilan API yang diotentikasi, seperti yang Anda lakukan dengan pengguna biasa. Ketika pengguna memutuskan untuk mendaftarkan akun, semua aktivitas dipertahankan dengan ID pengguna yang sama. Ini bagus untuk situasi seperti keranjang belanja sisi server atau aplikasi apa pun tempat Anda ingin terlibat pengguna sebelum mengirimkannya melalui alur pendaftaran.

Perbedaan Fitur

Beberapa fitur Identity Toolkit saat ini tidak tersedia di Firebase Authentication, sementara fitur lainnya telah didesain ulang dan berfungsi secara berbeda. Anda mungkin memilih untuk tidak langsung bermigrasi jika fitur ini penting aplikasi Anda. Dalam banyak kasus, fitur ini mungkin tidak penting untuk aplikasi Anda atau mungkin ada penggantian mudah yang akan memungkinkan Anda melanjutkan migrasi.

Perbedaan sisi server

Layanan Identity Toolkit inti dengan REST API yang mendasarinya, logika validasi, dan {i>database<i} pengguna utama hanya mengalami pembaruan kecil. Namun, beberapa fitur dan cara mengintegrasikan Firebase Authentication dalam layanan Anda telah berubah.

  • Penyedia Identitas

    PayPal dan AOL tidak didukung. Pengguna dengan dari IDP ini masih dapat login ke aplikasi Anda dengan alur pemulihan {i>password<i} dan mengatur {i>password<i} untuk akun mereka.

  • Library server

    Saat ini, ada Firebase admin SDK tersedia untuk Java, Node.js, Python, Go, dan C#.

  • Email pengelolaan akun

    Pesan pengaturan ulang kata sandi, verifikasi email, dan perubahan email dapat yang dilakukan oleh Firebase atau dari server email Anda sendiri. Saat ini, template email Firebase hanya menawarkan dan penyesuaian.

  • Konfirmasi perubahan alamat email

    Di Identity Toolkit, saat pengguna memutuskan untuk mengubah alamat emailnya, hal itu mengirim email ke alamat baru yang memiliki tautan untuk melanjutkan email alur perubahan alamat.

    Firebase mengonfirmasi perubahan alamat email dengan mengirimkan email pencabutan ke alamat email lama dengan tautan untuk mengembalikan perubahan.

  • Peluncuran IDP

    Identity Toolkit dapat menambahkan penyedia identitas ke login Anda secara bertahap, sehingga Anda dapat bereksperimen dengan permintaan dukungan pelanggan. Fitur ini telah dihapus di Firebase Authentication.

Perbedaan sisi klien

Di Firebase, fitur yang disediakan oleh Google Identity Toolkit dibagi menjadi dua komponen:

  • Firebase Authentication SDK

    Di Firebase Authentication, fungsi yang disediakan oleh REST API telah dikemas dalam SDK klien yang tersedia untuk Android, iOS, dan pada JavaScript. Anda dapat menggunakan SDK untuk login dan mendaftarkan pengguna; pengguna akses informasi profil; menautkan, memperbarui, dan menghapus akun; dan reset sandi menggunakan SDK klien alih-alih berkomunikasi dengan layanan {i>back end<i} melalui panggilan REST.

  • Autentikasi FirebaseUI

    Semua alur UI yang mengelola login, pendaftaran, pemulihan sandi, dan penautan akun telah dibuat ulang menggunakan Frebase Authentication SDK. SDK ini tersedia sebagai SDK open source untuk iOS dan Android agar Anda dapat sepenuhnya menyesuaikan alur dengan cara yang tidak mungkin dilakukan dengan Identity Toolkit.

Perbedaan lainnya mencakup:

  • Sesi dan migrasi

    Karena sesi dikelola secara berbeda di Identity Toolkit dan Firebase Authentication, pengguna Anda sesi yang ada akan dihentikan pada mengupgrade SDK, dan pengguna harus login kembali.

Sebelum memulai

Sebelum dapat bermigrasi dari Identity Toolkit ke Firebase Authentication, Anda harus

  1. Buka Firebase console, klik Import Google Project, lalu pilih project Identity Toolkit Anda.

  2. Klik > Izin untuk membuka IAM & Halaman Admin.

  3. Buka Akun layanan. Di sini Anda dapat melihat akun layanan yang yang telah dikonfigurasi sebelumnya untuk Identity Toolkit.

  4. Di samping akun layanan, klik > Buat kunci. Lalu, di Dialog Create private key, tetapkan Key type ke JSON, lalu klik Buat. File JSON yang berisi kredensial akun layanan Anda didownload untuk Anda. Anda memerlukan ID ini untuk melakukan inisialisasi SDK di langkah berikutnya.

  5. Kembali ke Firebase console. Di bagian Auth, buka halaman Email Templates. Pada halaman ini, menyesuaikan template email aplikasi Anda.

    Di Identity Toolkit, saat pengguna mereset sandi, mengubah alamat email, dan memverifikasi email mereka, Anda perlu mendapatkan kode OOB dari Server Identity Toolkit, lalu kirim kode ke pengguna melalui email. Firebase mengirimkan email berdasarkan template yang Anda konfigurasi tanpa tindakan tambahan yang diperlukan.

  6. Opsional: Jika Anda perlu mengakses layanan Firebase di server, instal Firebase SDK.

    1. Anda dapat menginstal modul Firebase Node.js dengan npm:

      $ npm init
      $ npm install --save firebase-admin
      
    2. Dalam kode, Anda dapat mengakses Firebase menggunakan:

      var admin = require('firebase-admin');
      var app = admin.initializeApp({
        credential: admin.credential.cert('path/to/serviceAccountCredentials.json')
      });
      

Selanjutnya, selesaikan langkah migrasi untuk platform aplikasi Anda: Android, iOS, web.

Server dan JavaScript

Perubahan penting

Ada sejumlah perbedaan tambahan dalam implementasi web dari Firebase dari Identity Toolkit.

  • Pengelolaan sesi web

    Sebelumnya, saat pengguna diautentikasi menggunakan widget Toolkit Identitas, cookie ditetapkan untuk pengguna yang digunakan untuk bootstrap sesi. Cookie ini memiliki masa aktif dua minggu dan digunakan untuk memungkinkan pengguna widget {i>account management<i} untuk mengubah {i>password<i} dan alamat email. Agak besar situs menggunakan cookie ini untuk mengautentikasi semua permintaan halaman lainnya di situs. Situs lain menggunakan cookie untuk membuat cookie mereka sendiri melalui sistem pengelolaan cookie framework.

    Firebase client SDK kini mengelola token ID Firebase dan bekerja dengan backend Firebase Authentication untuk menjaga sesi tetap segar. Backend mengakhiri sesi saat akun penting berubah (seperti pengguna perubahan sandi). Token ID Firebase tidak secara otomatis ditetapkan sebagai cookie di klien web dan hanya memiliki satu jam masa aktif. Kecuali Anda menginginkan sesi yang hanya berdurasi satu jam, token ID Firebase tidak sesuai digunakan sebagai cookie untuk memvalidasi semua permintaan halaman. Sebagai gantinya, Anda akan perlu menyiapkan pemroses saat pengguna login, dapatkan token ID Firebase, validasi token, lalu buat cookie Anda sendiri melalui sistem pengelolaan cookie framework Anda.

    Anda harus menetapkan masa aktif sesi cookie berdasarkan kebutuhan keamanan aplikasi Anda.

  • Alur login web

    Sebelumnya, pengguna dialihkan ke accountchooser.com saat login dimulai untuk mempelajari pengenal apa yang ingin digunakan oleh pengguna. Firebase Auth Alur UI sekarang dimulai dengan daftar metode login, termasuk email yang mengarah ke accountchooser.com untuk web dan menggunakan hintRequest API aktif Android. Selain itu, alamat email tidak lagi diperlukan di Firebase UI. Hal ini akan memudahkan dukungan bagi pengguna anonim, pengguna autentikasi khusus atau pengguna dari penyedia yang tidak memerlukan alamat email.

  • Widget pengelolaan akun

    Widget ini menyediakan UI bagi pengguna untuk mengubah alamat email, mengubah {i>password<i} atau membatalkan tautan akun mereka dari penyedia identitas. Saat ini sedang dalam pengembangan.

  • Tombol/widget login

    Widget seperti tombol login dan kartu pengguna tidak lagi tersedia. Mereka dapat dibangun dengan sangat mudah menggunakan Firebase Authentication API.

  • Tidak ada signOutUrl

    Anda harus memanggil firebase.auth.signOut() dan menangani callback.

  • Tidak ada oobActionUrl

    Pengiriman email sekarang ditangani oleh Firebase dan dikonfigurasi di Firebase konsol.

  • Penyesuaian CSS

    FirebaseUI menggunakan gaya visual Material Design Lite, yang menambahkan animasi Desain Material secara dinamis.

Langkah 1: Ubah Kode Server

  1. Jika server Anda mengandalkan token Identity Toolkit (berlaku selama dua minggu) untuk mengelola sesi pengguna web, Anda perlu mengonversi server cookie sesi.

    1. Implementasikan endpoint untuk memvalidasi token ID Firebase dan menetapkan cookie sesi untuk pengguna. Aplikasi klien mengirimkan token ID Firebase ke endpoint ini.
    2. Jika permintaan masuk berisi cookie sesi Anda sendiri, Anda dapat menganggap pengguna telah diotentikasi. Jika tidak, perlakukan permintaan sebagai tidak diautentikasi.
    3. Jika Anda tidak ingin salah satu pengguna Anda kehilangan proses login yang ada Anda harus menunggu selama dua minggu untuk mendapatkan semua token Identity Toolkit kedaluwarsa, atau lakukan juga validasi token ganda untuk aplikasi web seperti yang dijelaskan di bawah pada langkah 3.
  2. Selanjutnya, karena token Firebase berbeda dengan Identity Toolkit token, Anda harus memperbarui logika validasi token. Menginstal Firebase Server SDK ke server Anda; atau, jika Anda menggunakan bahasa yang tidak didukung oleh Firebase Server SDK, download library validasi token JWT untuk lingkungan Anda dan memvalidasi token dengan benar.

  3. Saat pertama kali melakukan pembaruan di atas, Anda mungkin masih memiliki jalur kode yang mengandalkan token Identity Toolkit. Jika Anda memiliki aplikasi iOS atau Android, pengguna harus meningkatkan aplikasi ke versi baru untuk mendapatkan jalur kode yang baru berfungsi. Jika Anda tidak ingin memaksa pengguna Anda untuk melakukan {i>update<i} aplikasi, Anda bisa menambahkan logika validasi server tambahan yang memeriksa dan menentukan apakah perlu menggunakan Firebase SDK atau Identity Toolkit SDK untuk memvalidasi token. Jika Anda hanya memiliki web aplikasi, semua permintaan otentikasi baru akan dialihkan ke Firebase, sehingga Anda hanya perlu menggunakan token Firebase metode verifikasi.

Lihat Referensi Firebase Web API.

Langkah 2: Perbarui HTML Anda

  1. Tambahkan kode inisialisasi Firebase ke aplikasi Anda:

    1. Buka project Anda di Firebase console.
    2. Di halaman Overview, klik Add App, lalu klik Add Firebase to aplikasi web kami. Cuplikan kode yang menginisialisasi Firebase akan ditampilkan.
    3. Salin dan tempel cuplikan inisialisasi ke halaman web Anda.
  2. Menambahkan FirebaseUI Auth ke aplikasi Anda:

    <script src="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.js"></script>
    <link type="text/css" rel="stylesheet" href="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.css" />
    <!-- *******************************************************************************************
       * TODO(DEVELOPER): Paste the initialization snippet from:
       * Firebase Console > Overview > Add Firebase to your web app. *
       ***************************************************************************************** -->
    <script type="text/javascript">
      // FirebaseUI config.
      var uiConfig = {
        'signInSuccessUrl': '<url-to-redirect-to-on-success>',
        'signInOptions': [
          // Leave the lines as is for the providers you want to offer your users.
          firebase.auth.GoogleAuthProvider.PROVIDER_ID,
          firebase.auth.FacebookAuthProvider.PROVIDER_ID,
          firebase.auth.TwitterAuthProvider.PROVIDER_ID,
          firebase.auth.GithubAuthProvider.PROVIDER_ID,
          firebase.auth.EmailAuthProvider.PROVIDER_ID
        ],
        // Terms of service url.
        'tosUrl': '<your-tos-url>',
      };
    
      // Initialize the FirebaseUI Widget using Firebase.
      var ui = new firebaseui.auth.AuthUI(firebase.auth());
      // The start method will wait until the DOM is loaded.
      ui.start('#firebaseui-auth-container', uiConfig);
    </script>
    
  3. Hapus Identity Toolkit SDK dari aplikasi Anda.

  4. Jika Anda mengandalkan token ID Toolkit Identitas untuk pengelolaan sesi, harus membuat perubahan berikut pada sisi klien:

    1. Setelah berhasil login dengan Firebase, dapatkan token ID Firebase dengan memanggil firebase.auth().currentUser.getToken().

    2. Mengirim token ID Firebase ke server backend, memvalidasinya, dan menerbitkan cookie sesi Anda sendiri.

      Jangan hanya mengandalkan cookie sesi saat melakukan analisis operasi atau mengirim permintaan edit yang telah diotentikasi ke server Anda. Anda harus menyediakan pemalsuan permintaan lintas situs (CSRF) tambahan perlindungan data.

      Jika kerangka kerja Anda tidak memberikan perlindungan CSRF, salah satu cara untuk mencegah serangan adalah mendapatkan token ID Firebase untuk pengguna yang login dengan getToken() dan menyertakan token dengan setiap permintaan (sesi juga akan dikirim secara default). Anda kemudian akan memvalidasi token tersebut menggunakan SDK server Firebase di samping pemeriksaan cookie sesi, yang diselesaikan oleh framework backend Anda. Hal ini akan mempersulit agar serangan CSRF berhasil, karena token ID Firebase hanya disimpan menggunakan penyimpanan web dan tidak pernah di dalam cookie.

    3. Token Identity Toolkit berlaku selama dua minggu. Anda mungkin ingin terus menerbitkan token selama dua minggu, atau Anda mungkin ingin lebih lama atau lebih singkat berdasarkan persyaratan keamanan aplikasi Anda. Saat pengguna logout, hapus cookie sesi.

Langkah 3: Perbarui URL alihan IDP

  1. Di Firebase console, buka bagian Authentication, lalu klik Tab Metode Login.

  2. Untuk setiap penyedia login gabungan yang Anda dukung, lakukan hal berikut:

    1. Klik nama penyedia login.
    2. Salin URI pengalihan OAuth.
    3. Di konsol developer penyedia login, perbarui pengalihan OAuth URI.

Android

Langkah 1: Menambahkan Firebase ke aplikasi

  1. Buka Firebase console, dan pilih project Identity Toolkit yang telah Anda impor.

  2. Di halaman Overview, klik Add App, lalu klik Add Firebase to aplikasi Android. Dalam dialog Add Firebase, berikan paket aplikasi Anda nama dan sidik jari sertifikat penandatanganan, lalu klik Add App. Tujuan File konfigurasi google-services.json kemudian didownload ke komputer Anda

  3. Salin file konfigurasi ke direktori root modul aplikasi Android Anda. Ini berisi informasi proyek dan klien OAuth Google.

  4. Di file build.gradle level Project (<var>your-project</var>/build.gradle), tentukan nama paket aplikasi Anda di bagian defaultConfig:

    defaultConfig {
       …..
      applicationId "com.your-app"
    }
    
  5. Juga di file build.gradle level Project, tambahkan dependensi untuk disertakan plugin google-services:

    buildscript {
     dependencies {
       // Add this line
       classpath 'com.google.gms:google-services:3.0.0'
     }
    }
    
  6. Di file build.gradle tingkat aplikasi (<var>my-project</var>/<var>app-module</var>/build.gradle), tambahkan baris berikut ke bawah untuk mengaktifkan plugin google-services:

    // Add to the bottom of the file
    apply plugin: 'com.google.gms.google-services'
    

    Plugin google-services menggunakan file google-services.json untuk mengonfigurasi aplikasi Anda untuk menggunakan Firebase.

  7. Selain itu, di file build.gradle tingkat Aplikasi, tambahkan Firebase Authentication dependensi:

    compile 'com.google.firebase:firebase-auth:23.0.0'
    compile 'com.google.android.gms:play-services-auth:21.2.0'
    

Langkah 2: Hapus Identity Toolkit SDK

  1. Hapus konfigurasi Identity Toolkit dari AndroidManifest.xml . Informasi ini disertakan dalam file google-service.json dan yang dimuat oleh plugin {i>google-services<i}.
  2. Hapus Identity Toolkit SDK dari aplikasi Anda.

Langkah 3: Menambahkan FirebaseUI ke aplikasi

  1. Menambahkan FirebaseUI Auth pada aplikasi Anda.

  2. Di aplikasi Anda, ganti panggilan ke Identity Toolkit SDK dengan panggilan ke FirebaseUI.

iOS

Langkah 1: Menambahkan Firebase ke aplikasi

  1. Tambahkan Firebase SDK ke aplikasi Anda dengan menjalankan perintah berikut:

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. Buka Firebase console, dan pilih project Identity Toolkit yang telah Anda impor.

  3. Di halaman Overview, klik Add App, lalu klik Add Firebase to aplikasi iOS. Dalam dialog Add Firebase, berikan ID paket aplikasi Anda dan ID App Store, lalu klik Add App. Tujuan File konfigurasi GoogleService-Info.plist kemudian didownload ke komputer Anda Jika Anda memiliki beberapa ID paket dalam project, setiap ID paket harus terhubung di Firebase console sehingga dapat memiliki File GoogleService-Info.plist.

  4. Salin file konfigurasi ke root project Xcode Anda dan tambahkan ke semua target.

Langkah 2: Hapus Identity Toolkit SDK

  1. Hapus GoogleIdentityToolkit dari Podfile aplikasi Anda.
  2. Jalankan perintah pod install.

Langkah 3: Menambahkan FirebaseUI ke aplikasi

  1. Menambahkan FirebaseUI Auth pada aplikasi Anda.

  2. Di aplikasi Anda, ganti panggilan ke Identity Toolkit SDK dengan panggilan ke FirebaseUI.