Cara kerja otorisasi pengguna (original) (raw)

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, danopenid. 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:

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:

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

Saat menggunakan alur kode autentikasi

Persetujuan pengguna

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.

Melihat dan mencabut izin

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

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

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.