Google Identity Toolkit versi terbaru telah dirilis sebagai Firebase Authentication. Selanjutnya, pengembangan fitur di Identity Toolkit akan dihentikan dan semua pengembangan fitur baru akan dilakukan di Firebase Authentication. Kami mendorong developer Identity Toolkit untuk beralih ke Firebase Authentication sesegera mungkin untuk aplikasi mereka; namun, Identity Toolkit akan terus berfungsi dan tidak akan dihentikan tanpa pengumuman lebih lanjut.
Fitur Baru
Firebase Authentication sudah memiliki beberapa peningkatan fitur yang signifikan dibandingkan dengan Google Identity Toolkit:
Akses ke semua Firebase
Firebase adalah platform seluler yang membantu Anda mengembangkan aplikasi berkualitas tinggi dengan cepat, meningkatkan basis pengguna, dan menghasilkan lebih banyak uang. Firebase terdiri dari fitur pelengkap yang dapat Anda gabungkan dan sesuaikan dengan kebutuhan Anda, serta mencakup infrastruktur untuk: analisis seluler, Cloud Messaging, Realtime Database, File Storage, Static Hosting, Remote Config, Crash Reporting seluler, dan pengujian Android.
UI yang diperbarui
Kami telah membangun ulang alur UI sepenuhnya berdasarkan riset UX terbaru Google. Hal ini mencakup pemulihan sandi, penautan akun, alur disambiguasi akun baru/lama yang sering kali membutuhkan waktu yang signifikan untuk membuat kode dan men-debug. Fitur ini mengintegrasikan Smart Lock untuk Sandi di Android, yang telah meningkatkan konversi login dan pendaftaran secara signifikan untuk aplikasi yang berpartisipasi. Library ini juga mendukung modifikasi tema yang mudah untuk mencocokkan aplikasi Anda dan, untuk penyesuaian maksimum, versi Android dan iOS telah dibuat open source.
Penyiapan server yang disederhanakan
Kami telah mempermudah developer menggunakan Firebase Authentication. Dengan Identity Toolkit, kami melihat bahwa banyak developer memilih untuk tidak menerapkan alur pemulihan email yang membuat pengguna mereka tidak dapat memulihkan akun mereka jika mereka lupa sandi. Firebase Authentication dapat mengirim email verifikasi, reset sandi, dan pesan sandi yang diubah kepada pengguna dan teksnya dapat dengan mudah disesuaikan untuk pengguna Anda. Selain itu, Anda tidak perlu lagi menghosting widget UI untuk menghosting pengalihan dan menyelesaikan operasi perubahan sandi.
Konsol admin baru
Firebase memiliki konsol developer baru dan bagian Authentication memungkinkan Anda melihat, mengubah, dan menghapus pengguna. Hal ini dapat sangat membantu dalam proses debug alur login dan pendaftaran Anda. Konsol juga memungkinkan Anda mengonfigurasi metode autentikasi dan menyesuaikan template email.
SDK Baru
Semua API server Identity Toolkit kini tersedia secara native dengan setiap library klien kami (Android, iOS, web). Developer akan dapat login dan mendaftar pengguna lama dan baru, mengakses properti pengguna, menautkan, memperbarui, dan menghapus akun, mereset sandi, dan lainnya tanpa terikat ke UI tetap. Jika mau, Anda dapat membuat sendiri seluruh alur dan pengalaman login secara manual di atas API ini.
Pengelolaan sesi untuk aplikasi seluler
Dengan Identity Toolkit, aplikasi membuat status sesi mereka sendiri berdasarkan peristiwa autentikasi awal dari Identity Toolkit. Firebase Auth menggunakan layanan backend yang mengambil token refresh, yang dibuat dari peristiwa autentikasi, dan menukarkannya dengan token akses berdurasi satu jam untuk Android, iOS, dan JavaScript. Saat pengguna mengubah sandinya, token refresh tidak dapat lagi membuat token akses baru, sehingga menonaktifkan akses hingga pengguna melakukan autentikasi ulang di 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 memerlukan pengguna untuk melalui proses login atau pendaftaran apa pun. Dengan pengguna anonim, Anda kini dapat melakukan panggilan API yang diautentikasi, seperti yang Anda lakukan dengan pengguna biasa. Saat pengguna memutuskan untuk mendaftar akun, semua aktivitas akan dipertahankan dengan ID pengguna yang sama. Hal ini sangat bagus untuk situasi seperti keranjang belanja sisi server atau aplikasi apa pun tempat Anda ingin berinteraksi dengan pengguna sebelum mengirim mereka 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 dapat memilih untuk tidak segera melakukan migrasi jika fitur ini penting bagi aplikasi Anda. Dalam banyak kasus, fitur ini mungkin tidak penting bagi aplikasi Anda atau mungkin ada penggantian yang mudah yang akan memungkinkan Anda melanjutkan migrasi.
Perbedaan sisi server
Layanan Identity Toolkit inti dengan REST API yang mendasarinya, logika validasi akun, dan database pengguna utama hanya mengalami update kecil. Namun, beberapa fitur dan cara Anda mengintegrasikan Firebase Authentication ke dalam layanan Anda telah berubah.
Penyedia Identitas
PayPal dan AOL tidak didukung. Pengguna dengan akun dari IDP ini masih dapat login ke aplikasi Anda dengan alur pemulihan sandi dan menyiapkan sandi untuk akun mereka.
Library server
Saat ini, Firebase Admin SDK tersedia untuk Java, Node.js, Python, Go, dan C#.
Email pengelolaan akun
Pesan reset sandi, verifikasi email, dan perubahan email dapat dilakukan oleh Firebase atau dari server email developer sendiri. Saat ini, template email Firebase hanya menawarkan penyesuaian terbatas.
Konfirmasi perubahan alamat email
Di Identity Toolkit, saat pengguna memutuskan untuk mengubah alamat emailnya, Identity Toolkit akan mengirim email ke alamat baru yang berisi link untuk melanjutkan alur perubahan alamat email.
Firebase mengonfirmasi perubahan alamat email dengan mengirimkan email pembatalan ke alamat email lama yang berisi link untuk mengembalikan perubahan.
Peluncuran IDP
Identity Toolkit memiliki kemampuan untuk menambahkan penyedia identitas ke sistem login Anda secara bertahap, sehingga Anda dapat bereksperimen dengan dampaknya terhadap permintaan dukungan Anda. Fitur ini dihapus di Firebase Authentication.
Perbedaan sisi klien
Di Firebase, fitur yang disediakan oleh Google Identity Toolkit dibagi menjadi dua komponen:
SDK Firebase Authentication
Di Firebase Authentication, fungsi yang disediakan oleh REST API Identity Toolkit telah dikemas dalam SDK klien yang tersedia untuk Android, iOS, dan JavaScript. Anda dapat menggunakan SDK untuk login dan mendaftar pengguna; mengakses informasi profil pengguna; menautkan, memperbarui, dan menghapus akun; serta mereset sandi menggunakan SDK klien, bukan berkomunikasi dengan layanan backend melalui panggilan REST.
FirebaseUI Auth
Semua alur UI yang mengelola login, pendaftaran, pemulihan sandi, dan penautan akun telah dibangun ulang menggunakan Firebase Authentication SDK. SDK ini tersedia sebagai SDK open source untuk iOS dan Android agar Anda dapat menyesuaikan alur sepenuhnya dengan cara yang tidak mungkin dilakukan dengan Identity Toolkit.
Perbedaan tambahan meliputi:
Sesi dan migrasi
Karena sesi dikelola secara berbeda di Identity Toolkit dan Firebase Authentication, sesi pengguna yang ada akan dihentikan saat mengupgrade SDK, dan pengguna harus login lagi.
Sebelum memulai
Sebelum dapat melakukan migrasi dari Identity Toolkit ke Firebase Authentication, Anda harus
Buka Firebase console, klik Import Google Project, lalu pilih project Identity Toolkit Anda.
Klik settings > Izin untuk membuka halaman IAM & Admin.
Buka Akun layanan. Di sini Anda dapat melihat akun layanan yang sebelumnya Anda konfigurasi untuk Identity Toolkit.
Di samping akun layanan, klik more_vert > Buat kunci. Kemudian, pada dialog Create private key, tetapkan Key type ke JSON, lalu klik Create. File JSON yang berisi kredensial akun layanan Anda akan didownload untuk Anda. Anda memerlukan kredensial ini untuk menginisialisasi SDK di langkah berikutnya.
Kembali ke Firebase console. Di bagian Auth, buka halaman Email Templates. Di halaman ini, sesuaikan template email aplikasi Anda.
Di Identity Toolkit, saat pengguna mereset sandi, mengubah alamat email, dan memverifikasi alamat email mereka, Anda perlu mendapatkan kode OOB dari server Identity Toolkit, lalu mengirimkan kode tersebut kepada pengguna melalui email. Firebase mengirim email berdasarkan template yang Anda konfigurasi tanpa memerlukan tindakan tambahan.
Opsional: Jika Anda perlu mengakses layanan Firebase di server, instal Firebase SDK.
Anda dapat menginstal modul Firebase Node.js dengan
npm
:$ npm init $ npm install --save firebase-admin
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-langkah migrasi untuk platform aplikasi Anda: Android, iOS, web.
Server dan JavaScript
Perubahan penting
Ada sejumlah perbedaan tambahan dalam penerapan Firebase dari Identity Toolkit di web.
Pengelolaan sesi web
Sebelumnya, saat pengguna melakukan autentikasi menggunakan widget Identity Toolkit, cookie ditetapkan untuk pengguna yang digunakan untuk mem-bootstrap sesi. Cookie ini memiliki masa aktif dua minggu dan digunakan untuk mengizinkan pengguna menggunakan widget pengelolaan akun untuk mengubah sandi dan alamat email. Beberapa 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 mereka.
SDK klien Firebase kini mengelola token ID Firebase dan bekerja dengan backend Firebase Authentication untuk menjaga sesi tetap aktif. Backend mengakhiri sesi saat terjadi perubahan penting pada akun (seperti perubahan sandi pengguna). Token ID Firebase tidak otomatis ditetapkan sebagai cookie di klien web dan hanya memiliki masa aktif satu jam. Kecuali jika Anda menginginkan sesi hanya satu jam, token ID Firebase tidak cocok untuk digunakan sebagai cookie untuk memvalidasi semua permintaan halaman Anda. Sebagai gantinya, Anda harus menyiapkan pemroses saat pengguna login, mendapatkan token ID Firebase, memvalidasi token, dan membuat 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 ID yang ingin digunakan pengguna. Alur Firebase Auth UI kini dimulai dengan daftar metode login, termasuk opsi email yang akan membukaaccountchooser.com
untuk web dan menggunakan hintRequest API di Android. Selain itu, alamat email tidak lagi diperlukan di UI Firebase. Hal ini akan mempermudah dukungan bagi pengguna anonim, pengguna autentikasi kustom, atau pengguna dari penyedia yang tidak memerlukan alamat email.Widget pengelolaan akun
Widget ini menyediakan UI bagi pengguna untuk mengubah alamat email, mengubah sandi, 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 disediakan. Fitur ini 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 kini ditangani oleh Firebase dan dikonfigurasi di Firebase console.
Penyesuaian CSS
FirebaseUI menggunakan gaya Material Design Lite, yang secara dinamis menambahkan animasi Desain Material.
Langkah 1: Ubah Kode Server
Jika server Anda mengandalkan token Identity Toolkit (berlaku selama dua minggu) untuk mengelola sesi pengguna web, Anda harus mengonversi server agar menggunakan cookie sesi sendiri.
- Terapkan endpoint untuk memvalidasi token ID Firebase dan menetapkan cookie sesi untuk pengguna. Aplikasi klien mengirimkan token ID Firebase ke endpoint ini.
- Jika permintaan masuk berisi cookie sesi Anda sendiri, Anda dapat menganggap pengguna telah diautentikasi. Jika tidak, perlakukan permintaan sebagai tidak diautentikasi.
- Jika Anda tidak ingin pengguna kehilangan sesi login yang ada, Anda harus menunggu selama dua minggu hingga semua token Identity Toolkit berakhir, atau juga melakukan validasi token ganda untuk aplikasi web Anda seperti yang dijelaskan di bawah pada langkah 3.
Selanjutnya, karena token Firebase berbeda dengan token Identity Toolkit, Anda harus memperbarui logika validasi token. Instal 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 validasi token dengan benar.
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 mengupgrade ke versi baru aplikasi agar jalur kode baru dapat berfungsi. Jika tidak ingin memaksa pengguna mengupdate aplikasi, Anda dapat menambahkan logika validasi server tambahan yang memeriksa token dan menentukan apakah token perlu menggunakan Firebase SDK atau Identity Toolkit SDK untuk memvalidasi token. Jika hanya memiliki aplikasi web, semua permintaan autentikasi baru akan dialihkan ke Firebase dan, oleh karena itu, Anda hanya perlu menggunakan metode verifikasi token Firebase.
Lihat Referensi Firebase Web API.
Langkah 2: Perbarui HTML Anda
Tambahkan kode inisialisasi Firebase ke aplikasi Anda:
- Buka project Anda di Firebase console.
- Di halaman Ringkasan, klik Tambahkan Aplikasi, lalu klik Tambahkan Firebase ke aplikasi web Anda. Cuplikan kode yang menginisialisasi Firebase akan ditampilkan.
- Salin dan tempel cuplikan inisialisasi ke halaman web Anda.
Tambahkan 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>
Hapus Identity Toolkit SDK dari aplikasi Anda.
Jika Anda mengandalkan token ID Identity Toolkit untuk pengelolaan sesi, Anda harus melakukan perubahan berikut di sisi klien:
Setelah berhasil login dengan Firebase, dapatkan token ID Firebase dengan memanggil
firebase.auth().currentUser.getToken()
.Kirim token ID Firebase ke server backend, validasi, dan terbitkan cookie sesi Anda sendiri.
Jangan hanya mengandalkan cookie sesi saat melakukan operasi sensitif atau mengirim permintaan pengeditan yang diautentikasi ke server Anda. Anda harus memberikan perlindungan tambahan dari pemalsuan permintaan lintas situs (CSRF).
Jika framework Anda tidak menyediakan perlindungan CSRF, salah satu cara untuk mencegah serangan adalah dengan mendapatkan token ID Firebase untuk pengguna yang login dengan
getToken()
dan menyertakan token dengan setiap permintaan (cookie sesi juga akan dikirim secara default). Kemudian, Anda akan memvalidasi token tersebut menggunakan Firebase Server SDK selain pemeriksaan cookie sesi, yang diselesaikan oleh framework backend Anda. Hal ini akan mempersulit keberhasilan serangan CSRF, karena token ID Firebase hanya disimpan menggunakan penyimpanan web dan tidak pernah di cookie.Token Identity Toolkit berlaku selama dua minggu. Anda dapat terus mengeluarkan token yang berlaku selama dua minggu, atau Anda dapat memperpanjang atau memperpendeknya berdasarkan persyaratan keamanan aplikasi Anda. Saat pengguna logout, hapus cookie sesi.
Langkah 3: Perbarui URL pengalihan IDP
Di Firebase console, buka bagian Authentication, lalu klik tab Sign-in Method.
Untuk setiap penyedia login gabungan yang Anda dukung, lakukan hal berikut:
- Klik nama penyedia login.
- Salin URI pengalihan OAuth.
- Di konsol developer penyedia login, perbarui URI pengalihan OAuth.
Android
Langkah 1: Menambahkan Firebase ke aplikasi Anda
Buka Firebase console, lalu pilih project Identity Toolkit yang sudah Anda impor.
Di halaman Ringkasan, klik Tambahkan Aplikasi, lalu klik Tambahkan Firebase ke aplikasi Android Anda. Di dialog Tambahkan Firebase, berikan nama paket dan sidik jari sertifikat penandatanganan aplikasi Anda, lalu klik Tambahkan Aplikasi. File konfigurasi
google-services.json
akan didownload ke komputer Anda.Salin file konfigurasi ke direktori root modul aplikasi Android Anda. File konfigurasi ini berisi informasi project dan klien Google OAuth.
Di file
build.gradle
Level project (<var>your-project</var>/build.gradle
), tentukan nama paket aplikasi Anda di bagiandefaultConfig
:defaultConfig { ….. applicationId "com.your-app" }
Juga dalam file
build.gradle
tingkat Project, tambahkan dependensi untuk menyertakan plugin google-services:buildscript { dependencies { // Add this line classpath 'com.google.gms:google-services:3.0.0' } }
Di file
build.gradle
Level aplikasi (<var>my-project</var>/<var>app-module</var>/build.gradle
) aplikasi Anda, tambahkan baris berikut di bagian 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 agar menggunakan Firebase.Selain itu, di file
build.gradle
level Aplikasi, tambahkan dependensi Firebase Authentication:compile 'com.google.firebase:firebase-auth:24.0.1' compile 'com.google.android.gms:play-services-auth:21.4.0'
Langkah 2: Hapus Identity Toolkit SDK
- Hapus konfigurasi Identity Toolkit dari file
AndroidManifest.xml
. Informasi ini disertakan dalam filegoogle-service.json
dan dimuat oleh plugin google-services. - Hapus Identity Toolkit SDK dari aplikasi Anda.
Langkah 3: Tambahkan FirebaseUI ke aplikasi Anda
Tambahkan FirebaseUI Auth ke aplikasi Anda.
Di aplikasi Anda, ganti panggilan ke Identity Toolkit SDK dengan panggilan ke FirebaseUI.
iOS
Langkah 1: Menambahkan Firebase ke aplikasi Anda
Tambahkan Firebase SDK ke aplikasi Anda dengan menjalankan perintah berikut:
$ cd your-project directory $ pod init $ pod 'Firebase'
Buka Firebase console, lalu pilih project Identity Toolkit yang sudah Anda impor.
Di halaman Ringkasan, klik Tambahkan Aplikasi, lalu klik Tambahkan Firebase ke aplikasi iOS Anda. Di dialog Tambahkan Firebase, berikan ID paket dan ID App Store aplikasi Anda, lalu klik Tambahkan Aplikasi. File konfigurasi
GoogleService-Info.plist
akan didownload ke komputer Anda. Jika ada beberapa ID paket dalam project, setiap ID paket harus dihubungkan di Firebase console agar dapat memiliki fileGoogleService-Info.plist
sendiri.Salin file konfigurasi ke root project Xcode Anda, lalu tambahkan ke semua target.
Langkah 2: Hapus Identity Toolkit SDK
- Hapus
GoogleIdentityToolkit
dari Podfile aplikasi Anda. - Jalankan perintah
pod install
.
Langkah 3: Tambahkan FirebaseUI ke aplikasi Anda
Tambahkan FirebaseUI Auth ke aplikasi Anda.
Di aplikasi Anda, ganti panggilan ke Identity Toolkit SDK dengan panggilan ke FirebaseUI.