Jika Anda baru menggunakan atau memahami Layanan Identitas Google atau otorisasi, mulai dengan membaca Ringkasan.
Google menawarkan library JavaScript yang mencakup fitur otorisasi untuk membantu Anda mengelola cakupan, mendapatkan izin pengguna, dan lebih mudah menangani 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 kebanyakan kasus, ini adalah metode paling sederhana dan 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 jangka pendek per pengguna yang dikeluarkan oleh Google, yang digunakan untuk memanggil Google API dengan aman dan mengakses data pengguna.
- Kode otorisasi adalah kode sementara yang dikeluarkan oleh Google untuk mengidentifikasi setiap pengguna yang login ke Akun Google mereka secara aman dari browser. Platform backend Anda menukar kode ini dengan token akses dan refresh.
- Token refresh adalah kredensial jangka panjang per pengguna yang dikeluarkan 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 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 berdasarkan 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 tergantung Anda.
- Mode pengalihan adalah alur kode otorisasi berdasarkan pengalihan HTTP. Agen pengguna pertama kali dialihkan ke Google, pengalihan kedua dari Google ke endpoint kode otorisasi platform Anda mencakup kode tersebut.
Masa aktif token ditetapkan oleh Google sebagai penerbit. Karena berbagai faktor, durasi persisnya dapat bervariasi.
Alur OAuth 2.0
Dua alur, yaitu kode implisit dan kode otorisasi akan dibahas. Keduanya menampilkan token akses yang sesuai untuk digunakan dengan Google API.
Sebaiknya gunakan alur kode otorisasi 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 dengan lebih mudah seperti mengirim pengingat SMS tentang rapat mendatang yang dijadwalkan pada menit terakhir. Pilih model otorisasi yang menjelaskan perbedaan antara kedua alur tersebut secara lebih mendetail.
Library JavaScript Layanan Identitas Google mengikuti standar OAuth 2.0 untuk:
- mengelola alur implisit agar aplikasi web dalam browser dapat memperoleh token akses dengan cepat dan mudah dari Google yang diperlukan untuk memanggil Google API.
- memulai alur kode otorisasi dari browser pengguna.
Langkah-langkah umum
Alur kode implisit dan otorisasi dimulai dengan cara yang sama:
- Aplikasi Anda meminta akses ke satu atau beberapa cakupan.
- Google menampilkan dialog izin kepada pengguna, dan jika perlu, membuat pengguna login ke Akun Google-nya terlebih dahulu.
- Pengguna menyetujui setiap cakupan yang diminta satu per satu.
Setiap alur kemudian selesai dengan langkah-langkah yang 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 akan ditampilkan ke pengendali callback aplikasi dalam browser, tanpa mengharuskan pengguna keluar dari situs.
- Mulai dari Langkah 4: Tangani respons server OAuth 2.0, platform backend Anda menyelesaikan pertukaran server ke server dengan Google, yang pada akhirnya menghasilkan token refresh per pengguna dan token akses ditampilkan ke platform Anda.
Persetujuan pengguna
Sebelum mendapatkan token akses, setiap pengguna harus memberikan izin bagi aplikasi Anda untuk mengakses cakupan yang diminta. Untuk melakukannya, Google menampilkan dialog izin selama Langkah 2 di atas dan mencatat hasilnya di myaccount.google.com/permissions.
Nama, logo, kebijakan privasi, persyaratan layanan, dan cakupan yang diminta aplikasi Anda akan ditampilkan kepada pengguna beserta opsi untuk menyetujui atau membatalkan permintaan tersebut.
Dalam gambar 1, dialog izin untuk satu cakupan akan ditampilkan. Saat satu cakupan diminta, tidak ada kotak centang yang diperlukan untuk menyetujui atau menolak cakupan.
Gambar 1: Dialog izin pengguna dengan satu cakupan.
Pada gambar 2, dialog izin untuk beberapa cakupan akan ditampilkan. Saat lebih dari satu cakupan diminta, setiap kotak centang diperlukan untuk memungkinkan pengguna menyetujui atau menolak setiap cakupan.
Gambar 2: Dialog izin pengguna dengan beberapa cakupan.
Akun pengguna
Akun Google diperlukan untuk merekam izin dan menerbitkan token akses. Sebelumnya, pengguna individu harus mengautentikasi diri mereka ke Google dengan login ke Akun Google.
Meskipun bukan persyaratan, sebaiknya Login dengan Google digunakan untuk pendaftaran dan login ke platform web atau aplikasi web Anda. Hal ini akan mengurangi hambatan pengguna dengan meminimalkan jumlah langkah yang diperlukan dan secara opsional memungkinkan Anda mengaitkan token akses dengan masing-masing akun di platform Anda.
Misalnya, penggunaan Login dengan Google akan menetapkan sesi Akun Google yang 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 masih akan diwajibkan untuk login ke Akun Google terlebih dahulu untuk mendapatkan izin.
Menambahkan petunjuk login selama inisialisasi otorisasi--biasanya alamat email Akun Google pengguna--memungkinkan Google melewati tampilan pemilih akun, sehingga menyimpan langkah pengguna. Kredensial Token ID yang ditampilkan oleh Login dengan Google berisi alamat email pengguna.
Aplikasi web yang hanya berjalan di browser dapat sepenuhnya 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.
Sebagai alternatif, sistem akun pengguna diwajibkan oleh alur kode otorisasi. Token refresh per pengguna harus dikaitkan dengan akun perorangan pada platform backend dan disimpan untuk digunakan nanti. Cara menerapkan, 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 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 memanggil Endpoint OAuth 2.0 Google secara langsung seperti yang dijelaskan dalam OAuth 2.0 untuk Aplikasi Web Sisi Klien.
Demikian pula, untuk alur kode otorisasi, Anda dapat memilih untuk mengimplementasikan metode sendiri dan mengikuti langkah-langkah yang diuraikan dalam Menggunakan OAuth 2.0 untuk Aplikasi Server Web.
Dalam kedua kasus tersebut, sebaiknya gunakan library Layanan Identitas Google untuk mengurangi waktu dan upaya pengembangan serta meminimalkan risiko keamanan seperti yang dijelaskan oleh Praktik Terbaik Keamanan OAuth 2.0.