Cara kerja otorisasi pengguna

Jika Anda baru atau tidak terbiasa dengan Google Identity Services atau otorisasi, mulailah dengan membaca Ringkasan.

Google menawarkan library JavaScript yang menyertakan fitur otorisasi untuk membantu Anda mengelola cakupan, mendapatkan persetujuan pengguna, dan menyederhanakan penggunaan alur OAuth 2.0 standar. Aplikasi web Anda, yang berjalan di browser pengguna, menggunakan library ini untuk mengelola alur implisit OAuth 2.0, atau untuk 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 memenuhi kebutuhan Anda. Dalam sebagian besar kasus, ini adalah metode paling mudah yang tersedia untuk autentikasi pengguna.

Istilah dan konsep utama

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

  • Token akses adalah kredensial per pengguna jangka pendek yang dikeluarkan oleh Google dan digunakan untuk memanggil Google API dan mengakses data pengguna secara aman.
  • Kode otorisasi adalah kode sementara yang dikeluarkan oleh Google untuk mengidentifikasi pengguna individual yang login ke Akun Google mereka dari browser secara aman. Platform backend Anda menukar kode ini dengan token akses dan refresh.
  • Token refresh adalah kredensial per pengguna jangka panjang yang dikeluarkan oleh Google dan disimpan dengan aman di platform Anda serta dapat digunakan untuk mendapatkan token akses baru yang valid meskipun pengguna tidak ada.
  • Cakupan membatasi token ke 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 memanggil pengendali callback Anda yang kemudian bertanggung jawab untuk mengirimkan kode autentikasi ke platform Anda. Cara melakukannya terserah Anda.
  • Mode pengalihan adalah alur kode otorisasi yang didasarkan pada pengalihan HTTP. User-agent pertama-tama dialihkan ke Google, pengalihan kedua dari Google ke endpoint kode otorisasi platform Anda menyertakan kode.

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

Alur OAuth 2.0

Dua alur, implisit dan kode otorisasi, akan dibahas. Keduanya menampilkan token akses yang cocok untuk digunakan dengan Google API.

Alur kode otorisasi direkomendasikan karena menawarkan keamanan pengguna yang lebih baik. Alur ini juga menampilkan token refresh yang dapat digunakan untuk mendapatkan token akses tanpa kehadiran pengguna, sehingga platform Anda dapat melakukan tindakan asinkron seperti mengirimkan pengingat SMS tentang rapat mendatang yang dijadwalkan pada menit terakhir. Memilih model otorisasi menjelaskan perbedaan antara kedua alur tersebut secara lebih mendetail.

Library JavaScript Google Identity Services mengikuti standar OAuth 2.0 untuk:

  • mengelola alur implisit untuk memungkinkan aplikasi web dalam browser Anda mendapatkan token akses dari Google dengan cepat yang diperlukan untuk memanggil Google API.
  • memulai alur kode otorisasi dari browser pengguna.

Langkah umum

Alur implisit dan kode otorisasi dimulai dengan cara yang sama:

  1. Aplikasi Anda meminta akses ke satu atau beberapa cakupan.
  2. Google menampilkan dialog persetujuan kepada pengguna, dan jika perlu, pertama-tama membuat pengguna login ke Akun Google mereka.
  3. Pengguna menyetujui setiap cakupan yang diminta secara individual.

Setiap alur kemudian selesai dengan langkah yang berbeda.

Saat menggunakan alur implisit

  • Google menggunakan pengendali callback untuk memberi tahu aplikasi Anda tentang hasil persetujuan dan menampilkan token akses untuk 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 dialog, kode akan ditampilkan ke pengendali callback aplikasi dalam browser Anda, tanpa pengguna perlu keluar dari situs Anda.
  • Dimulai dari Langkah 4: Menangani respons server OAuth 2.0, platform backend Anda menyelesaikan pertukaran server ke server dengan Google, yang pada akhirnya akan menampilkan token refresh dan token akses per pengguna ke platform Anda.

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

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

Pada gambar 1, dialog persetujuan untuk satu cakupan ditampilkan. Jika satu cakupan diminta, tidak ada kotak centang yang diperlukan untuk menyetujui atau menolak cakupan.

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

Gambar 1: Dialog persetujuan pengguna dengan satu cakupan.

Pada gambar 2, dialog persetujuan untuk beberapa cakupan ditampilkan. Jika lebih dari satu cakupan diminta, kotak centang individual diperlukan untuk memungkinkan pengguna 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 persetujuan pengguna dengan beberapa cakupan.

Akun pengguna

Akun Google diperlukan untuk mencatat persetujuan dan mengeluarkan token akses. Sebelumnya, pengguna individual harus mengautentikasi diri mereka ke Google dengan login ke Akun Google.

Meskipun bukan persyaratan, sebaiknya gunakan Login dengan Google untuk pendaftaran dan login ke aplikasi web atau platform backend Anda. Dengan melakukannya, gesekan pengguna akan berkurang karena meminimalkan jumlah langkah yang diperlukan dan secara opsional memungkinkan Anda mengaitkan token akses dengan akun individual di platform Anda.

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

Menambahkan petunjuk login selama inisialisasi otorisasi—biasanya alamat email Akun Google pengguna—memungkinkan Google melewati tampilan pemilih akun, sehingga menghemat langkah pengguna. Kredensial Token ID yang ditampilkan oleh Login dengan Google berisi alamat email pengguna.

Aplikasi web yang hanya berjalan di browser dapat mengandalkan Google sepenuhnya untuk autentikasi pengguna, dan 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 individual di platform backend Anda dan disimpan untuk digunakan nanti. Cara menerapkan, menggunakan, dan mengelola sistem akun pengguna bersifat unik untuk platform Anda dan tidak dibahas secara lebih mendetail.

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

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

Opsi otorisasi lainnya

Atau, browser dapat memperoleh token akses menggunakan alur implisit dengan memanggil Endpoint OAuth 2.0 Google secara langsung 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 oleh Praktik Terbaik Keamanan OAuth 2.0.