Cara kerja otorisasi pengguna

Jika Anda baru atau belum memahami Google Identity Services atau otorisasi, mulailah dengan membaca Ringkasan.

Google menawarkan library JavaScript yang mencakup fitur otorisasi untuk membantu Anda mengelola cakupan, mendapatkan izin pengguna, dan bekerja lebih mudah dengan alur OAuth 2.0 standar. Aplikasi web Anda, yang berjalan di browser pengguna, menggunakan library ini untuk mengelola alur implisit OAuth 2.0, atau memulai alur kode otorisasi yang selesai di platform backend Anda.

Cakupan khusus autentikasi

Beberapa cakupan hanya digunakan untuk autentikasi pengguna: email, profile, dan openid. Jika aplikasi Anda hanya menggunakan cakupan ini, pertimbangkan apakah Token ID JWT dan Login dengan Google untuk pendaftaran dan login pengguna sesuai dengan kebutuhan Anda. Pada umumnya, ini adalah metode paling mudah dan sederhana yang tersedia untuk autentikasi pengguna.

Istilah dan konsep utama

Panduan ini mengasumsikan bahwa Anda telah memiliki pemahaman dasar tentang konsep OAuth 2.0 dan standar IETF seperti RFC6749. Istilah berikut digunakan di seluruh panduan otorisasi:

  • Token akses adalah kredensial berumur pendek per pengguna yang diterbitkan oleh Google yang digunakan untuk memanggil Google API dan mengakses data pengguna dengan aman.
  • Kode otorisasi adalah kode sementara yang dikeluarkan oleh Google untuk mengidentifikasi secara aman setiap pengguna yang login ke Akun Google mereka dari browser. Platform backend Anda menukar kode ini dengan akses dan token refresh.
  • Token refresh adalah kredensial yang berlaku lama per pengguna yang diterbitkan oleh Google, yang disimpan dengan aman di platform Anda, dan dapat digunakan untuk mendapatkan token akses baru yang valid meskipun pengguna tidak ada.
  • Cakupan membatasi token untuk jumlah data pengguna yang ditentukan dan terbatas. Lihat Cakupan OAuth 2.0 untuk Google API untuk mengetahui informasi selengkapnya.
  • Mode pop-up adalah alur kode otorisasi yang didasarkan pada callback JavaScript yang berjalan di browser pengguna. Google akan memanggil pengendali callback yang kemudian bertanggung jawab untuk mengirimkan kode autentikasi ke platform Anda. Anda bebas menentukan cara untuk melakukannya.
  • Mode pengalihan adalah alur kode otorisasi yang didasarkan pada pengalihan HTTP. Agen pengguna dialihkan ke Google terlebih dahulu, pengalihan kedua dari Google ke endpoint kode otorisasi platform Anda menyertakan kode.

Masa berlaku token ditetapkan oleh Google, sebagai penerbit. Karena berbagai faktor, durasi persisnya dapat bervariasi.

Alur OAuth 2.0

Ada dua alur, yaitu kode implisit dan otorisasi. Keduanya menampilkan token akses yang cocok untuk digunakan dengan Google API.

Sebaiknya gunakan alur kode otorisasi karena menawarkan peningkatan keamanan pengguna. Alur ini juga menampilkan token refresh yang dapat digunakan untuk mendapatkan token akses tanpa kehadiran pengguna, sehingga platform Anda dapat lebih mudah melakukan tindakan asinkron seperti mengirim pengingat SMS untuk rapat mendatang yang dijadwalkan pada menit terakhir. Memilih model otorisasi menjelaskan perbedaan antara dua alur secara lebih mendetail.

Library JavaScript Google Identity Services mengikuti standar OAuth 2.0 untuk:

  • mengelola alur implisit agar aplikasi web dalam browser Anda dapat memperoleh token akses dengan cepat dan mudah dari Google yang diperlukan untuk memanggil Google API.
  • mulailah alur kode otorisasi dari browser pengguna.

Langkah umum

Alur kode implisit dan otorisasi dimulai dengan cara yang sama:

  1. Aplikasi Anda meminta akses ke satu atau beberapa cakupan.
  2. Google menampilkan dialog izin kepada pengguna dan, jika perlu, membuat pengguna login ke Akun Google-nya terlebih dahulu.
  3. Pengguna menyetujui setiap cakupan yang diminta satu per satu.

Setiap alur akan diakhiri dengan langkah-langkah berbeda.

Saat menggunakan alur implisit

  • Google menggunakan pengendali callback untuk memberi tahu aplikasi Anda tentang hasil izin dan menampilkan token akses untuk setiap cakupan yang disetujui.

Saat menggunakan alur kode autentikasi

  • Google merespons dengan kode otorisasi per pengguna:
    • Dalam mode pengalihan, kode akan ditampilkan ke endpoint kode otorisasi platform Anda.
    • Dalam mode pop-up, kode ditampilkan ke pengendali callback aplikasi dalam browser Anda, tanpa mengharuskan pengguna keluar dari situs Anda.
  • Mulai Langkah 4: Tangani respons server OAuth 2.0, platform backend Anda akan menyelesaikan pertukaran server ke server dengan Google, yang pada akhirnya akan menghasilkan token refresh per pengguna dan token akses yang ditampilkan ke platform Anda.

Sebelum mendapatkan token akses, setiap pengguna harus memberikan izin agar aplikasi Anda dapat mengakses cakupan yang diminta. Untuk melakukannya, Google akan menampilkan dialog izin pada Langkah 2 di atas dan mencatat hasilnya di myaccount.google.com/permissions.

Nama, logo, kebijakan privasi, persyaratan layanan, dan cakupan yang diminta akan ditampilkan kepada pengguna beserta opsi untuk menyetujui atau membatalkan permintaan.

Dalam Gambar 1, dialog izin untuk satu cakupan ditampilkan. Saat satu cakupan diminta, tidak ada kotak yang diperlukan untuk menyetujui atau menolak cakupan.

Dialog izin pengguna dengan tombol Batal atau Lanjutkan dan satu cakupan, tidak ada
kotak centang yang ditampilkan.

Gambar 1: Dialog izin pengguna dengan satu cakupan.

Dalam Gambar 2, dialog izin untuk beberapa cakupan ditampilkan. Jika lebih dari satu cakupan diminta, setiap kotak perlu dicentang agar pengguna dapat menyetujui atau menolak setiap cakupan.

Dialog izin pengguna dengan tombol Batal atau Lanjutkan dan beberapa cakupan, setiap cakupan memiliki pemilih kotak centang.

Gambar 2: Dialog izin pengguna dengan beberapa cakupan.

Akun pengguna

Akun Google diperlukan untuk mencatat izin dan mengeluarkan token akses. Sebelumnya, pengguna perorangan harus telah mengautentikasi diri ke Google dengan login ke Akun Google.

Meskipun bukan persyaratan, sebaiknya gunakan Login dengan Google untuk mendaftar dan login ke aplikasi web atau platform backend Anda. Tindakan ini akan mengurangi hambatan pengguna dengan meminimalkan jumlah langkah yang diperlukan dan secara opsional memungkinkan Anda mengaitkan token akses dengan mudah dengan akun individual di platform Anda.

Misalnya, penggunaan Login dengan Google akan membuat sesi Akun Google yang aktif, sehingga nantinya tidak perlu meminta pengguna untuk login ke Akun Google saat membuat permintaan otorisasi. Jika Anda memilih untuk mengautentikasi pengguna ke aplikasi dengan cara lain, seperti nama pengguna dan sandi, atau penyedia identitas lainnya, mereka akan tetap diminta untuk login terlebih dahulu ke Akun Google untuk mendapatkan izin.

Menambahkan petunjuk login selama inisialisasi otorisasi--biasanya alamat email Akun Google pengguna--memungkinkan Google melewati tampilan pemilih akun sehingga pengguna tidak perlu repot menampilkan satu langkah pun. Kredensial Token ID yang ditampilkan oleh Login Dengan Google berisi alamat email pengguna.

Aplikasi web yang hanya berjalan di browser dapat hanya mengandalkan Google untuk autentikasi pengguna, memilih untuk tidak menerapkan sistem pengelolaan akun pengguna. Dalam skenario ini, yang dikenal sebagai alur implisit, tidak perlu mengaitkan token refresh dengan akun pengguna dan penyimpanan aman pengelolaan.

Atau, sistem akun pengguna diperlukan oleh alur kode otorisasi. Token refresh per pengguna harus dikaitkan dengan akun individu di platform backend Anda dan disimpan untuk digunakan nanti. Cara mengimplementasikan, bekerja dengan, dan mengelola sistem akun pengguna bersifat unik untuk platform Anda dan tidak dibahas secara lebih mendetail.

Pengguna dapat melihat atau mencabut izin kapan saja dari setelan Akun Google mereka.

Secara opsional, aplikasi web atau platform Anda dapat memanggil google.accounts.oauth2.revoke untuk mencabut token dan menghapus izin pengguna, yang berguna saat pengguna menghapus akunnya dari platform Anda.

Opsi otorisasi lainnya

Atau, browser dapat memperoleh token akses menggunakan alur implisit dengan langsung memanggil Endpoint OAuth 2.0 Google seperti yang dijelaskan oleh OAuth 2.0 untuk Aplikasi Web Sisi Klien.

Demikian pula, untuk alur kode otorisasi, Anda dapat memilih untuk menerapkan metode Anda sendiri, dan mengikuti langkah-langkah yang diuraikan dalam Menggunakan OAuth 2.0 untuk Aplikasi Server Web.

Dalam kedua kasus tersebut, sebaiknya gunakan library Google Identity Services untuk mengurangi waktu dan upaya pengembangan serta meminimalkan risiko keamanan seperti yang dijelaskan dalam Praktik Terbaik Keamanan OAuth 2.0.