Bermigrasi dari Google Identity Toolkit ke Identity Platform Google Cloud

Versi terbaru Google Identity Toolkit telah dirilis sebagai Identity Platform dan Firebase Authentication. Ke depannya, fitur yang berfungsi di Identity Toolkit akan dibekukan; semua baru pengembangan fitur akan dilakukan di Identity Platform dan Firebase Autentikasi. Sebaiknya developer Identity Toolkit beralih ke platform ini sesegera mungkin jika praktis untuk aplikasi mereka.

Fitur Baru

Identity Platform sudah memiliki peningkatan fitur yang signifikan dibandingkan dengan Google Identity Toolkit:

  • Konsol admin baru

    Identity Platform memiliki konsol developer baru yang memungkinkan Anda untuk melihat, memodifikasi, dan menghapus pengguna Anda; ini bisa membantu melakukan proses debug pada alur login dan pendaftaran. Konsol juga memungkinkan Anda untuk mengkonfigurasi metode otentikasi dan menyesuaikan template email.

  • Metode baru Autentikasi

    Identity Platform mendukung standar federasi perusahaan, seperti SAML dan OIDC, yang memungkinkan Anda 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 memerlukan pengguna untuk melalui proses login atau pendaftaran; hal ini memungkinkan Anda melakukan panggilan API yang diautentikasi seperti yang Anda lakukan dengan pengguna biasa. Kapan pengguna memutuskan untuk mendaftar ke sebuah akun, semua aktivitas dipertahankan dengan ID pengguna yang sama. Ini sangat berguna untuk skenario seperti belanja sisi server keranjang belanja atau aplikasi lain di mana Anda ingin melibatkan pengguna sebelum mereka melalui alur pendaftaran.

  • Menskalakan dengan percaya diri dengan Perjanjian Tingkat Layanan dan Dukungan Cloud

    Identity Platform dibuat di infrastruktur Google yang tepercaya, dan 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 dengan cepat, mengembangkan basis pengguna, dan menghasilkan lebih banyak uang. Firebase terdiri dari fitur pelengkap yang dapat Anda gabungkan sesuai kebutuhan dan menyertakan infrastruktur untuk: analisis seluler, pesan cloud, database real-time, penyimpanan file, hosting statis, konfigurasi jarak jauh, pelaporan error seluler, dan pengujian Android.

  • UI yang diperbarui

    Kami telah sepenuhnya membuat ulang alur UI berdasarkan riset UX terbaru Google. Hal ini mencakup pemulihan sandi, penautan akun, alur disambiguasi akun baru/lama yang sering kali memerlukan waktu yang signifikan untuk membuat kode dan melakukan debug. Fitur ini mengintegrasikan Smart Lock untuk Sandi di Android, yang telah meningkatkan konversi login dan pendaftaran secara signifikan 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

    Dengan Identity Toolkit, kami melihat bahwa banyak developer memilih untuk tidak menerapkan alur pemulihan email yang membuat pengguna tidak dapat memulihkan akun mereka jika lupa sandi. Identity Platform dapat mengirim pesan verifikasi email, reset sandi, dan perubahan sandi kepada pengguna, dan teksnya dapat dengan mudah disusaikan 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 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 seluruh alur login dan pengalaman Anda sendiri secara manual di atas API ini.

  • Pengelolaan sesi untuk aplikasi seluler

    Dengan Identity Toolkit, aplikasi membuat status sesinya sendiri berdasarkan peristiwa autentikasi awal dari Identity Toolkit. Identity Platform menggunakan 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. 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 melakukan migrasi jika fitur ini penting bagi aplikasi Anda. Dalam banyak kasus, fitur ini mungkin tidak penting bagi 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 Anda mengintegrasikan Identity Platform ke dalam layanan 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 Admin SDK tersedia untuk Java, Node.js, Python, Go, dan C#.

  • Email pengelolaan akun

    Reset sandi, verifikasi email, dan pesan 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, 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 link 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 Identity Platform, fitur yang disediakan oleh Google Identity Toolkit dibagi menjadi dua komponen:

  • Client SDK dan Server SDK

    Di Identity Platform, fungsi yang disediakan oleh REST API telah dikemas ke 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.

  • Widget UI

    Semua alur UI yang mengelola login, pendaftaran, pemulihan sandi, dan penautan akun telah dibuat ulang menggunakan SDK Klien 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 dapat 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 Anda harus login lagi.

Sebelum memulai

Sebelum dapat bermigrasi dari Identity Toolkit ke Identity Platform, harus:

  1. Buka Cloud console dan pilih project Identity Toolkit Anda.

  2. Dari Marketplace, telusuri ke Platform Identitas dan pilih 'Enable Identity Platform'

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

  4. Di samping akun layanan, klik > Buat kunci. Kemudian, di 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.

  5. Kembali ke Konsol Cloud. Di bagian Penyedia, dalam metode login 'Email/Sandi', buka halaman Email Templates. Kemudian, Anda dapat menyesuaikan template aplikasi.

    Di Identity Toolkit, saat pengguna mereset sandi, mengubah alamat email, atau memverifikasi alamat email mereka, Anda harus mendapatkan kode OOB dari server Identity Toolkit, lalu mengirim kode tersebut kepada pengguna melalui email. Identity Platform mengirim email berdasarkan template yang Anda konfigurasi tanpa tindakan tambahan yang diperlukan.

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

    1. Anda dapat menginstal Node.js Admin SDK dengan npm:

      $ npm init
      $ npm install --save firebase-admin
      
    2. Di 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, ketika pengguna melakukan otentikasi menggunakan Widget Identity Toolkit, cookie ditetapkan untuk pengguna yang digunakan melakukan bootstrap pada 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. 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.

    SDK klien Identity Platform kini mengelola token ID dan berfungsi dengan backend Identity Platform untuk menjaga sesi tetap baru. Backend akan menghentikan sesi saat perubahan akun penting (seperti perubahan sandi pengguna) terjadi. Token ID tidak secara otomatis ditetapkan sebagai cookie di klien web dan hanya memiliki satu jam masa aktif. Kecuali jika Anda ingin sesi hanya satu jam, token ID tidak sesuai untuk digunakan sebagai cookie untuk memvalidasi semua permintaan halaman Anda. Sebagai gantinya, Anda harus menyiapkan pemroses saat pengguna login, mendapatkan token ID, memvalidasi token, dan membuat cookie Anda sendiri melalui sistem pengelolaan cookie framework.

    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. Platform Identitas 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 UI. Hal ini akan mempermudah dukungan untuk pengguna anonim, pengguna autentikasi kustom, atau pengguna dari penyedia yang tidak mewajibkan 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 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 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

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

    1. Terapkan endpoint untuk memvalidasi token ID dan menetapkan cookie sesi untuk pengguna. Aplikasi klien mengirim token ID Firebase ke endpoint ini.
    2. Jika permintaan masuk berisi cookie sesi Anda sendiri, Anda dapat mempertimbangkan pengguna tersebut telah diautentikasi. Jika tidak, perlakukan permintaan sebagai tidak diautentikasi.
    3. Jika tidak ingin pengguna kehilangan sesi login mereka yang ada, Anda harus menunggu dua minggu hingga semua token Identity Toolkit berakhir masa berlakunya, atau juga melakukan validasi token ganda untuk aplikasi web Anda seperti yang dijelaskan di bawah pada langkah 3.
  2. Selanjutnya, karena token ID berbeda dengan Identity Toolkit token, Anda harus memperbarui 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.

  3. Saat pertama kali melakukan update 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 tidak ingin memaksa pengguna mengupdate aplikasi, Anda dapat menambahkan logika validasi server tambahan yang memeriksa token dan menentukan apakah token tersebut 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

  1. Tambahkan kode inisialisasi ke aplikasi Anda:

    1. Buka project Anda di Konsol Cloud.
    2. Di halaman penyedia, klik Detail Penyiapan Aplikasi. Cuplikan kode yang menginisialisasi Identity Platform akan ditampilkan.
    3. Salin dan tempel cuplikan inisialisasi ke halaman web Anda.
  2. 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>
    
  3. Hapus Identity Toolkit SDK dari aplikasi Anda.

  4. Jika Anda mengandalkan token ID Identity Toolkit untuk pengelolaan sesi, Anda harus melakukan perubahan berikut di sisi klien:

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

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

      Jangan hanya mengandalkan cookie sesi saat melakukan operasi sensitif atau mengirim permintaan edit yang diautentikasi ke server Anda. Anda harus memberikan perlindungan pemalsuan permintaan lintas situs (CSRF) tambahan.

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

    3. Token Identity Toolkit berlaku selama dua minggu. Anda dapat terus mengeluarkan token yang berlangsung 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 alihan IDP

  1. Di Cloud Console, buka Providers bagian.

  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 URI pengalihan OAuth.

Android

Langkah 1: Tambahkan Identity Platform ke aplikasi Anda dengan Firebase

  1. Buka Konsol Cloud, dan pilih project Identity Toolkit Anda.

  2. Di halaman Provider, klik Application setup details, pilih Android, lalu klik Get Started in Firebase. Dalam dialog Add Firebase, berikan nama paket dan penandatanganan aplikasi sidik jari sertifikat, lalu klik Add App. google-services.json file konfigurasi kemudian diunduh ke komputer Anda.

  3. Salin file konfigurasi ke direktori root modul aplikasi Android Anda. File konfigurasi ini berisi informasi project dan klien Google OAuth.

  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. Selain itu, dalam file build.gradle level Project, tambahkan dependensi untuk menyertakan plugin layanan Google:

    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 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 google-services menggunakan file google-services.json untuk mengonfigurasi aplikasi Anda agar menggunakan Firebase.

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

    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 dimuat oleh plugin google-services.
  2. Hapus Identity Toolkit SDK dari aplikasi Anda.

Langkah 3: Menambahkan FirebaseUI ke aplikasi

  1. Tambahkan FirebaseUI Auth ke 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 SDK klien ke aplikasi Anda dengan menjalankan perintah berikut:

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. Buka Konsol Cloud, dan pilih project Identity Toolkit Anda.

  3. Di halaman Penyedia, klik Detail penyiapan aplikasi, pilih tab iOS, lalu klik Mulai di Firebase. Dalam dialog Add Firebase, memberikan nama paket aplikasi Anda dan sidik jari sertifikat penandatanganan dan klik Add App. File konfigurasi google-services.json kemudian diunduh ke komputer. Di dialog Add Firebase, berikan informasi ID paket dan ID App Store, lalu klik Tambahkan Aplikasi. 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: Tambahkan FirebaseUI ke aplikasi Anda

  1. Menambahkan FirebaseUI Auth ke aplikasi Anda.

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