Versi terbaru Google Identity Toolkit telah dirilis sebagai Identity Platform dan Firebase Authentication. Ke depannya, pengembangan fitur pada Identity Toolkit akan dibekukan; semua pengembangan fitur baru akan dilakukan di Identity Platform dan Firebase Authentication. Kami mendorong developer Identity Toolkit untuk beralih ke platform ini sesegera mungkin untuk aplikasi mereka.
Fitur Baru
Identity Platform sudah memiliki peningkatan fitur yang signifikan dibandingkan Google Identity Toolkit:
Konsol admin baru
Identity Platform memiliki konsol developer baru yang memungkinkan Anda melihat, mengubah, dan menghapus pengguna; hal ini dapat membantu men-debug alur login dan pendaftaran Anda. Konsol ini juga memungkinkan Anda mengonfigurasi metode autentikasi dan menyesuaikan template email.
Metode Autentikasi baru
Identity Platform mendukung standar federasi perusahaan, seperti SAML dan OIDC, sehingga Anda dapat menskalakan aplikasi dan layanan SaaS. Identity Platform juga menawarkan dukungan untuk penyedia seperti GitHub, Microsoft, Yahoo, dan lainnya. Anda dapat menggunakan login anonim untuk membuat ID pengguna unik tanpa mengharuskan pengguna melalui proses login atau pendaftaran apa pun. Hal ini memungkinkan Anda 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 berguna untuk skenario seperti keranjang belanja sisi server atau aplikasi lain yang mengharuskan Anda berinteraksi dengan pengguna sebelum mengirimkannya melalui alur pendaftaran.
Menskalakan dengan percaya diri menggunakan Perjanjian Tingkat Layanan dan Dukungan Cloud
Identity Platform dibangun di atas infrastruktur Google yang tepercaya, serta menyediakan Perjanjian Tingkat Layanan dan dukungan dari Google Cloud. Artinya, Anda dapat menskalakan layanan dengan percaya diri, dan mengandalkan Google untuk memberikan ketahanan, ketersediaan, dan skalabilitas yang Anda butuhkan.
Akses ke semua Firebase
Firebase adalah platform seluler yang membantu Anda mengembangkan aplikasi berkualitas tinggi secara cepat, mengembangkan basis pengguna, dan menghasilkan lebih banyak uang. Firebase terdiri dari fitur-fitur pelengkap yang dapat Anda padu padankan sesuai kebutuhan dan mencakup infrastruktur untuk: analisis seluler, cloud messaging, realtime database, penyimpanan file, hosting statis, konfigurasi jarak jauh, crash reporting seluler, dan pengujian Android.
UI yang diperbarui
Kami telah sepenuhnya membangun ulang alur UI berdasarkan riset UX terbaru dari Google. Hal ini mencakup pemulihan sandi, penautan akun, alur disambiguasi akun baru/yang sudah ada yang sering kali memerlukan waktu lama untuk membuat kode dan men-debug. Library 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 agar sesuai dengan aplikasi Anda dan, untuk kemampuan penyesuaian maksimum, versi Android dan iOS telah di-open source.
Penyiapan server yang disederhanakan
Dengan Identity Toolkit, kami melihat bahwa banyak developer memilih untuk tidak menerapkan alur pemulihan email, sehingga pengguna mereka tidak dapat memulihkan akun jika lupa sandi. Identity Platform dapat mengirim pesan verifikasi email, reset sandi, dan perubahan sandi 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.
SDK Baru
Semua API server Identity Toolkit kini tersedia secara native dengan setiap library klien kami (Android, iOS, web). Developer akan dapat membuat pengguna lama dan baru login dan mendaftar, mengakses properti pengguna, menautkan, memperbarui, dan menghapus akun, mereset sandi, dan lainnya tanpa terikat pada 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 sendiri berdasarkan peristiwa autentikasi awal dari Identity Toolkit. Identity Platform menggunakan layanan backend yang mengambil token refresh, yang dibuat dari peristiwa autentikasi, dan menukarnya dengan token akses berdurasi satu jam untuk Android, iOS, dan JavaScript. Saat pengguna mengubah sandinya, token refresh tidak akan lagi dapat membuat token akses baru, sehingga menonaktifkan akses hingga pengguna melakukan autentikasi ulang di perangkat tersebut.
Perbedaan Fitur
Beberapa fitur Identity Toolkit saat ini tidak tersedia di Identity Platform, sementara fitur lainnya telah didesain ulang dan berfungsi secara berbeda. Anda dapat memilih untuk tidak segera bermigrasi jika fitur ini penting untuk aplikasi Anda. Dalam banyak kasus, fitur ini mungkin tidak penting untuk aplikasi Anda atau mungkin ada penggantian mudah yang 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 sedikit perubahan. Namun, beberapa fitur dan cara Anda mengintegrasikan Identity Platform 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, 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 hanya menawarkan penyesuaian terbatas dari UI, tetapi dapat disesuaikan lebih lanjut dengan Admin SDK
Konfirmasi perubahan alamat email
Di Identity Toolkit, saat pengguna memutuskan untuk mengubah alamat emailnya, sistem akan mengirimkan email ke alamat baru yang berisi link untuk melanjutkan alur perubahan alamat email.
Firebase mengonfirmasi perubahan alamat email dengan mengirimkan email pencabutan 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 telah dihapus di Firebase Authentication.
Perbedaan sisi klien
Di Identity Platform, fitur yang disediakan oleh Google Identity Toolkit dibagi menjadi dua komponen:
SDK Klien dan Server
Di Identity Platform, fungsi yang disediakan oleh REST API Identity Toolkit telah dipaketkan ke dalam SDK klien yang tersedia untuk Android, iOS, dan JavaScript. Anda dapat menggunakan SDK untuk memproses login dan pendaftaran pengguna; mengakses informasi profil pengguna; menautkan, memperbarui, dan menghapus akun; serta mereset sandi menggunakan SDK klien, bukan berkomunikasi dengan layanan backend melalui panggilan REST.
Widget UI
Semua alur UI yang mengelola login, pendaftaran, pemulihan sandi, dan penautan akun telah di-build ulang menggunakan Client SDK dan dikemas sebagai widget login. SDK ini tersedia sebagai SDK open source untuk iOS, Android, dan Web, serta memungkinkan Anda menyesuaikan alur sepenuhnya dengan cara yang tidak mungkin dilakukan dengan Identity Toolkit.
Perbedaan lainnya mencakup:
Sesi dan migrasi
Karena sesi dikelola secara berbeda di Identity Toolkit dan Identity Platform, sesi pengguna yang ada akan dihentikan setelah mengupgrade SDK, dan pengguna harus login lagi.
Sebelum memulai
Sebelum dapat bermigrasi dari Identity Toolkit ke Identity Platform, Anda harus:
Buka Konsol Cloud dan pilih project Identity Toolkit Anda.
Dari Marketplace, buka Identity Platform, lalu pilih 'Enable Identity Platform'
Buka Akun layanan. Di sini, Anda dapat melihat akun layanan yang sebelumnya Anda konfigurasi untuk Identity Toolkit.
Di samping akun layanan, klik more_vert > Create key. Kemudian, dalam 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 akan memerlukannya untuk melakukan inisialisasi SDK di langkah berikutnya.
Kembali ke Konsol Cloud. Di bagian Providers, dalam metode login 'Email/Password', buka halaman Email Templates. Kemudian, Anda dapat menyesuaikan template aplikasi.
Di Identity Toolkit, saat pengguna mereset sandi, mengubah alamat email, atau memverifikasi alamat email, Anda perlu mendapatkan kode OOB dari server Identity Toolkit, lalu mengirimkan kode tersebut kepada pengguna melalui email. Identity Platform mengirim email berdasarkan template yang Anda konfigurasi tanpa memerlukan tindakan tambahan.
Opsional: Jika Anda perlu mengakses layanan Identity Platform di server, instal Firebase SDK.
Anda dapat menginstal Node.js Admin SDK dengan
npm:$ npm init $ npm install --save firebase-adminDalam 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 web Identity Platform dari Identity Toolkit.
Pengelolaan sesi web
Sebelumnya, saat pengguna melakukan autentikasi menggunakan widget Identity Toolkit, cookie ditetapkan untuk pengguna yang digunakan untuk melakukan 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 Identity Platform kini mengelola token ID dan bekerja dengan backend Identity Platform untuk menjaga sesi tetap baru. Backend akan mengakhiri sesi saat terjadi perubahan akun yang penting (seperti perubahan sandi pengguna). Token ID tidak otomatis ditetapkan sebagai cookie di klien web dan hanya memiliki masa aktif satu jam. Kecuali jika Anda hanya menginginkan sesi berdurasi satu jam, token ID tidak sesuai untuk digunakan sebagai cookie guna memvalidasi semua permintaan halaman Anda. Sebagai gantinya, Anda harus menyiapkan pemroses untuk saat pengguna login, mendapatkan token ID, 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.comsaat login dimulai untuk mempelajari ID yang ingin digunakan pengguna. Alur UI Identity Platform kini dimulai dengan daftar metode login, termasuk opsi email yang mengarah keaccountchooser.comuntuk web dan menggunakan hintRequest API di Android. Selain itu, alamat email tidak lagi diperlukan di UI. Hal ini akan mempermudah dukungan untuk 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, fitur tersebut sedang dalam pengembangan.
Tombol/widget login
Widget seperti tombol login dan kartu pengguna tidak lagi disediakan. Alur ini dapat dibuat 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 Identity Platform dan dikonfigurasi di Firebase console.
Penyesuaian CSS
Widget UI menggunakan gaya Material Design Lite, yang menambahkan animasi Desain Material secara dinamis.
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 sesinya sendiri.
- Terapkan endpoint untuk memvalidasi token ID 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 habis masa berlakunya, atau melakukan validasi token ganda untuk aplikasi web Anda seperti yang dijelaskan di bawah pada langkah 3.
Selanjutnya, karena token ID berbeda dengan token Identity Toolkit, Anda harus mengupdate logika validasi token. Instal Admin SDK ke server Anda; atau, jika Anda menggunakan bahasa yang tidak didukung oleh Admin SDK, download library validasi token JWT untuk lingkungan Anda dan validasi token dengan benar.
Saat pertama kali melakukan update di atas, Anda mungkin masih memiliki jalur kode yang mengandalkan token Identity Toolkit. Jika Anda memiliki aplikasi iOS atau aplikasi Android, pengguna harus mengupgrade ke versi baru aplikasi agar alur kode baru berfungsi. Jika tidak ingin memaksa pengguna mengupdate aplikasi, Anda dapat menambahkan logika validasi server tambahan yang memeriksa token dan menentukan apakah perlu menggunakan Firebase SDK atau Identity Toolkit SDK untuk memvalidasi token. Jika Anda hanya memiliki aplikasi web, semua permintaan autentikasi baru akan dialihkan ke Identity Platform. Oleh karena itu, Anda hanya perlu menggunakan metode verifikasi token ID.
Lihat Referensi Web API.
Langkah 2: Perbarui HTML Anda
Tambahkan kode inisialisasi ke aplikasi Anda:
- Buka project Anda di Konsol Cloud.
- Di halaman providers, klik Application Setup Details. Cuplikan kode yang menginisialisasi Identity Platform akan ditampilkan.
- Salin dan tempel cuplikan inisialisasi ke halaman web Anda.
Tambahkan Widget Autentikasi 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 Identity Platform, dapatkan token ID dengan memanggil
firebase.auth().currentUser.getToken().Kirim token ID ke server backend, validasi, dan terbitkan cookie sesi Anda sendiri.
Jangan hanya mengandalkan cookie sesi saat melakukan operasi sensitif atau mengirim permintaan edit yang diautentikasi ke server Anda. Anda perlu memberikan perlindungan pemalsuan permintaan lintas situs (CSRF) tambahan.
Jika framework Anda tidak memberikan perlindungan CSRF, salah satu cara untuk mencegah serangan adalah dengan mendapatkan token ID untuk pengguna yang login dengan
getToken()dan menyertakan token tersebut dengan setiap permintaan (cookie sesi juga akan dikirim secara default). Kemudian, Anda akan memvalidasi token tersebut menggunakan Admin SDK selain pemeriksaan cookie sesi, yang diselesaikan oleh framework backend Anda. Hal ini akan mempersulit keberhasilan serangan CSRF, karena token ID hanya disimpan menggunakan penyimpanan web dan tidak pernah disimpan dalam cookie.Token Identity Toolkit berlaku selama dua minggu. Anda dapat terus menerbitkan token yang berlaku selama dua minggu, atau Anda dapat membuatnya lebih lama atau lebih singkat berdasarkan persyaratan keamanan aplikasi Anda. Saat pengguna logout, hapus cookie sesi.
Langkah 3: Perbarui URL pengalihan IDP
Di Konsol Cloud, buka bagian Penyedia.
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: Tambahkan Identity Platform ke aplikasi Anda dengan Firebase
Buka Konsol Cloud, dan pilih project Identity Toolkit Anda.
Di halaman Providers, klik Application setup details, pilih tab Android, lalu klik Get Started in Firebase. Dalam dialog Add Firebase, berikan nama paket dan sidik jari sertifikat penandatanganan aplikasi Anda, lalu klik Add App. File konfigurasi
google-services.jsonkemudian 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.
Dalam file
build.gradlelevel Project (<var>your-project</var>/build.gradle), tentukan nama paket aplikasi Anda di bagiandefaultConfig:defaultConfig { ….. applicationId "com.your-app" }Selain itu, di file
build.gradlelevel Project, tambahkan dependensi untuk menyertakan plugin layanan Google:buildscript { dependencies { // Add this line classpath 'com.google.gms:google-services:3.0.0' } }Dalam file
build.gradlelevel aplikasi (<var>my-project</var>/<var>app-module</var>/build.gradle), tambahkan baris berikut setelah plugin Android Gradle untuk mengaktifkan plugin google-services:apply plugin: 'com.android.application' // Add this line apply plugin: 'com.google.gms.google-services'Plugin layanan Google menggunakan file
google-services.jsonuntuk mengonfigurasi aplikasi Anda agar menggunakan Firebase.Selain itu, di file
build.gradlelevel Aplikasi, tambahkan dependensi Firebase Authentication:compile 'com.google.firebase:firebase-auth:25.0.0' compile 'com.google.android.gms:play-services-auth:22.0.0'
Langkah 2: Menghapus Identity Toolkit SDK
- Hapus konfigurasi Identity Toolkit dari file
AndroidManifest.xml. Informasi ini disertakan dalam filegoogle-service.jsondan 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
Tambahkan SDK klien ke aplikasi Anda dengan menjalankan perintah berikut:
$ cd your-project directory $ pod init $ pod 'Firebase'Buka Konsol Cloud, dan pilih project Identity Toolkit Anda.
Di halaman Providers, klik Application setup details, pilih tab iOS, lalu klik Get Started in Firebase. Dalam dialog Add Firebase, berikan nama paket aplikasi dan sidik jari sertifikat penandatanganan, lalu klik Add App. File konfigurasi
google-services.jsonkemudian akan didownload ke komputer Anda. Dalam dialog Add Firebase, berikan ID paket dan ID App Store aplikasi Anda, lalu klik Add App. File konfigurasiGoogleService-Info.plistkemudian 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.plistsendiri.Salin file konfigurasi ke root project Xcode Anda dan tambahkan file tersebut ke semua target.
Langkah 2: Menghapus Identity Toolkit SDK
- Hapus
GoogleIdentityToolkitdari 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.