Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Menggunakan OAuth 2.0 untuk Mengakses Google API

Google API menggunakan protokol OAuth 2.0 untuk otentikasi dan otorisasi. Google mendukung skenario OAuth 2.0 yang umum seperti skenario untuk server web, sisi klien, terpasang, dan aplikasi perangkat masukan terbatas.

Untuk memulai, dapatkan kredensial klien OAuth 2.0 dari Google API Console . Kemudian aplikasi klien Anda meminta token akses dari Server Otorisasi Google, mengekstrak token dari respons, dan mengirimkan token ke Google API yang ingin Anda akses. Untuk demonstrasi interaktif penggunaan OAuth 2.0 dengan Google (termasuk opsi untuk menggunakan kredensial klien Anda sendiri), lakukan eksperimen dengan OAuth 2.0 Playground .

Halaman ini memberikan ringkasan tentang skenario otorisasi OAuth 2.0 yang didukung Google, dan menyediakan link ke konten yang lebih mendetail. Untuk detail tentang menggunakan OAuth 2.0 untuk autentikasi, lihat OpenID Connect .

Langkah-langkah dasar

Semua aplikasi mengikuti pola dasar saat mengakses Google API menggunakan OAuth 2.0. Pada level tinggi, Anda mengikuti lima langkah:

1. Dapatkan kredensial OAuth 2.0 dari Google API Console.

Kunjungi Google API Console untuk mendapatkan kredensial OAuth 2.0 seperti ID klien dan rahasia klien yang diketahui oleh Google dan aplikasi Anda. Kumpulan nilai bervariasi berdasarkan jenis aplikasi yang Anda buat. Misalnya, aplikasi JavaScript tidak memerlukan rahasia, tetapi aplikasi server web memerlukannya.

2. Dapatkan token akses dari Server Otorisasi Google.

Sebelum aplikasi Anda dapat mengakses data pribadi menggunakan Google API, aplikasi harus mendapatkan token akses yang memberikan akses ke API tersebut. Token akses tunggal dapat memberikan berbagai tingkat akses ke beberapa API. Parameter variabel yang disebut scope mengontrol kumpulan sumber daya dan operasi yang diizinkan oleh token akses. Selama permintaan token akses, aplikasi Anda mengirimkan satu atau beberapa nilai dalam parameter scope .

Ada beberapa cara untuk membuat permintaan ini, dan cara tersebut bervariasi berdasarkan jenis aplikasi yang Anda buat. Misalnya, aplikasi JavaScript mungkin meminta token akses menggunakan browser redirect ke Google, sedangkan aplikasi yang diinstal pada perangkat yang tidak memiliki browser menggunakan permintaan layanan web.

Beberapa permintaan memerlukan langkah otentikasi di mana pengguna login dengan akun Google mereka. Setelah masuk, pengguna ditanya apakah mereka bersedia memberikan satu atau lebih izin yang diminta aplikasi Anda. Proses ini disebut persetujuan pengguna .

Jika pengguna memberikan setidaknya satu izin, Server Otorisasi Google mengirimkan aplikasi Anda token akses (atau kode otorisasi yang dapat digunakan aplikasi Anda untuk mendapatkan token akses) dan daftar cakupan akses yang diberikan oleh token tersebut. Jika pengguna tidak memberikan izin, server mengembalikan kesalahan.

Biasanya praktik terbaik adalah meminta cakupan secara bertahap, pada saat akses diperlukan, bukan di awal. Misalnya, aplikasi yang ingin mendukung penyimpanan acara ke kalender tidak boleh meminta akses Google Kalender sampai pengguna menekan tombol "Tambahkan ke Kalender"; lihat otorisasi tambahan .

3. Memeriksa cakupan akses yang diberikan oleh pengguna.

Bandingkan cakupan yang disertakan dalam respons token akses dengan cakupan yang diperlukan untuk mengakses fitur dan fungsionalitas aplikasi Anda yang bergantung pada akses ke Google API terkait. Nonaktifkan semua fitur aplikasi Anda yang tidak dapat berfungsi tanpa akses ke API terkait.

Cakupan yang disertakan dalam permintaan Anda mungkin tidak cocok dengan cakupan yang disertakan dalam respons Anda, meskipun pengguna memberikan semua cakupan yang diminta. Lihat dokumentasi untuk setiap Google API untuk cakupan yang diperlukan untuk akses. API dapat memetakan beberapa nilai string cakupan ke satu cakupan akses, mengembalikan string cakupan yang sama untuk semua nilai yang diizinkan dalam permintaan. Contoh: Google People API mungkin menampilkan cakupan https://www.googleapis.com/auth/contacts saat aplikasi meminta pengguna memberi otorisasi cakupan https://www.google.com/m8/feeds/ ; metode Google People API people.updateContact memerlukan cakupan https://www.googleapis.com/auth/contacts diberikan.

4. Kirim token akses ke API.

Setelah aplikasi mendapatkan token akses, aplikasi tersebut mengirimkan token ke Google API di header permintaan Otorisasi HTTP . Anda dapat mengirim token sebagai parameter string kueri URI, tetapi kami tidak merekomendasikannya, karena parameter URI bisa berakhir di file log yang tidak sepenuhnya aman. Selain itu, merupakan praktik REST yang baik untuk menghindari pembuatan nama parameter URI yang tidak perlu. Perhatikan bahwa dukungan query-string akan dihentikan pada tanggal 1 Juni 2021.

Token akses hanya valid untuk rangkaian operasi dan sumber daya yang dijelaskan dalam scope permintaan token. Misalnya, jika token akses dikeluarkan untuk API Google Kalender, itu tidak memberikan akses ke API Kontak Google. Namun, Anda dapat mengirim token akses tersebut ke API Google Kalender beberapa kali untuk operasi serupa.

5. Segarkan token akses, jika perlu.

Token akses memiliki masa hidup yang terbatas. Jika aplikasi Anda memerlukan akses ke Google API setelah masa pakai token akses tunggal, aplikasi tersebut dapat memperoleh token penyegaran. Token penyegaran memungkinkan aplikasi Anda mendapatkan token akses baru.

Skenario

Aplikasi server web

Titik akhir Google OAuth 2.0 mendukung aplikasi server web yang menggunakan bahasa dan kerangka kerja seperti PHP, Java, Python, Ruby, dan ASP.NET.

Urutan otorisasi dimulai saat aplikasi Anda mengalihkan browser ke URL Google; URL menyertakan parameter kueri yang menunjukkan jenis akses yang diminta. Google menangani otentikasi pengguna, pemilihan sesi, dan persetujuan pengguna. Hasilnya adalah kode otorisasi, yang dapat ditukar aplikasi dengan token akses dan token penyegaran.

Aplikasi harus menyimpan token penyegaran untuk penggunaan di masa mendatang dan menggunakan token akses untuk mengakses Google API. Setelah token akses kedaluwarsa, aplikasi menggunakan token penyegaran untuk mendapatkan yang baru.

Aplikasi Anda mengirimkan permintaan token ke Server Otorisasi Google, menerima kode otorisasi, menukar kode tersebut dengan sebuah token, dan menggunakan token tersebut untuk memanggil titik akhir API Google.

Untuk detailnya, lihat Menggunakan OAuth 2.0 untuk Aplikasi Server Web .

Aplikasi terinstal

Titik akhir Google OAuth 2.0 mendukung aplikasi yang dipasang di perangkat seperti komputer, perangkat seluler, dan tablet. Saat Anda membuat ID klien melalui Google API Console , tentukan bahwa ini adalah aplikasi Terinstal, lalu pilih Android, aplikasi Chrome, iOS, Universal Windows Platform (UWP), atau aplikasi Desktop sebagai jenis aplikasi.

Proses ini menghasilkan ID klien dan, dalam beberapa kasus, rahasia klien, yang Anda sematkan dalam kode sumber aplikasi Anda. (Dalam konteks ini, rahasia klien jelas tidak diperlakukan sebagai rahasia.)

Urutan otorisasi dimulai saat aplikasi Anda mengalihkan browser ke URL Google; URL menyertakan parameter kueri yang menunjukkan jenis akses yang diminta. Google menangani otentikasi pengguna, pemilihan sesi, dan persetujuan pengguna. Hasilnya adalah kode otorisasi, yang dapat ditukar aplikasi dengan token akses dan token penyegaran.

Aplikasi harus menyimpan token penyegaran untuk penggunaan di masa mendatang dan menggunakan token akses untuk mengakses Google API. Setelah token akses kedaluwarsa, aplikasi menggunakan token penyegaran untuk mendapatkan yang baru.

Aplikasi Anda mengirimkan permintaan token ke Server Otorisasi Google, menerima kode otorisasi, menukar kode tersebut dengan sebuah token, dan menggunakan token tersebut untuk memanggil titik akhir API Google.

Untuk detailnya, lihat Menggunakan OAuth 2.0 untuk Aplikasi Terinstal .

Aplikasi sisi klien (JavaScript)

Titik akhir Google OAuth 2.0 mendukung aplikasi JavaScript yang berjalan di browser.

Urutan otorisasi dimulai saat aplikasi Anda mengalihkan browser ke URL Google; URL menyertakan parameter kueri yang menunjukkan jenis akses yang diminta. Google menangani otentikasi pengguna, pemilihan sesi, dan persetujuan pengguna.

Hasilnya adalah token akses, yang harus divalidasi oleh klien sebelum memasukkannya ke dalam permintaan Google API. Saat token kedaluwarsa, aplikasi mengulangi proses tersebut.

Aplikasi JS Anda mengirimkan permintaan token ke Server Otorisasi Google, menerima token, memvalidasi token, dan menggunakan token untuk memanggil titik akhir API Google.

Untuk detailnya, lihat Menggunakan OAuth 2.0 untuk Aplikasi Sisi Klien .

Aplikasi pada perangkat input terbatas

Titik akhir Google OAuth 2.0 mendukung aplikasi yang berjalan pada perangkat masukan terbatas seperti konsol game, kamera video, dan printer.

Urutan otorisasi dimulai dengan aplikasi membuat permintaan layanan web ke URL Google untuk kode otorisasi. Respons berisi beberapa parameter, termasuk URL dan kode yang ditampilkan aplikasi kepada pengguna.

Pengguna mendapatkan URL dan kode dari perangkat, lalu beralih ke perangkat atau komputer terpisah dengan kemampuan masukan yang lebih kaya. Pengguna meluncurkan browser, menavigasi ke URL yang ditentukan, masuk, dan memasukkan kode.

Sementara itu, aplikasi mengumpulkan URL Google pada interval tertentu. Setelah pengguna menyetujui akses, respons dari server Google berisi token akses dan token penyegaran. Aplikasi harus menyimpan token penyegaran untuk penggunaan di masa mendatang dan menggunakan token akses untuk mengakses Google API. Setelah token akses kedaluwarsa, aplikasi menggunakan token penyegaran untuk mendapatkan yang baru.

Pengguna login di perangkat terpisah yang memiliki browser

Untuk mengetahui detailnya, lihat Menggunakan OAuth 2.0 untuk Perangkat .

Akun layanan

Google API seperti Prediction API dan Google Cloud Storage dapat bertindak atas nama aplikasi Anda tanpa mengakses informasi pengguna. Dalam situasi ini, aplikasi Anda perlu membuktikan identitasnya sendiri ke API, tetapi tidak diperlukan izin pengguna. Demikian pula, dalam skenario perusahaan, aplikasi Anda dapat meminta akses yang didelegasikan ke beberapa sumber daya.

Untuk jenis interaksi server-ke-server ini, Anda memerlukan akun layanan , yang merupakan akun milik aplikasi Anda, bukan milik pengguna akhir individual. Aplikasi Anda memanggil Google API atas nama akun layanan, dan persetujuan pengguna tidak diperlukan. (Dalam skenario non-akun layanan, aplikasi Anda memanggil Google API atas nama pengguna akhir, dan terkadang diperlukan persetujuan pengguna.)

Kredensial akun layanan, yang Anda peroleh dari Google API Console, termasuk alamat email yang dibuat unik, ID klien, dan setidaknya satu pasangan kunci publik / pribadi. Anda menggunakan ID klien dan satu kunci pribadi untuk membuat JWT bertanda tangan dan membuat permintaan token akses dalam format yang sesuai. Aplikasi Anda kemudian mengirimkan permintaan token ke Server Otorisasi Google OAuth 2.0, yang mengembalikan token akses. Aplikasi menggunakan token untuk mengakses Google API. Saat token kedaluwarsa, aplikasi mengulangi proses tersebut.

Aplikasi server Anda menggunakan JWT untuk meminta token dari Server Otorisasi Google, kemudian menggunakan token tersebut untuk memanggil titik akhir API Google. Tidak ada pengguna akhir yang terlibat.

Untuk detailnya, lihat dokumentasi akun layanan .

Ukuran token

Token dapat bervariasi ukurannya, hingga batas berikut:

  • Kode otorisasi: 256 byte
  • Token akses: 2048 byte
  • Segarkan token: 512 byte

Token akses yang dikembalikan oleh API Layanan Token Keamanan Google Cloud memiliki struktur yang mirip dengan token akses Google API OAuth 2.0, tetapi memiliki batas ukuran token yang berbeda. Untuk detailnya, lihat dokumentasi API .

Google berhak mengubah ukuran token dalam batas ini, dan aplikasi Anda harus mendukung ukuran token variabel yang sesuai.

Segarkan kedaluwarsa token

Anda harus menulis kode Anda untuk mengantisipasi kemungkinan bahwa token penyegaran yang diberikan mungkin tidak lagi berfungsi. Token penyegaran mungkin berhenti berfungsi karena salah satu alasan berikut:

  • Pengguna telah mencabut akses aplikasi Anda .
  • Token penyegaran tidak digunakan selama enam bulan.
  • Pengguna mengubah sandi dan token penyegaran berisi cakupan Gmail.
  • Akun pengguna telah melebihi jumlah maksimum token penyegaran yang diberikan (langsung).
  • Pengguna adalah bagian dari organisasi Google Cloud Platform yang menerapkan kebijakan kontrol sesi.

Proyek Google Cloud Platform dengan layar persetujuan OAuth yang dikonfigurasi untuk jenis pengguna eksternal dan status penerbitan "Pengujian" mengeluarkan token penyegaran yang kedaluwarsa dalam 7 hari.

Saat ini ada batas 50 token penyegaran per Akun Google per ID klien OAuth 2.0. Jika batas tercapai, membuat token penyegaran baru secara otomatis membatalkan token penyegaran terlama tanpa peringatan. Batas ini tidak berlaku untuk akun layanan .

Ada juga batasan yang lebih besar pada jumlah total token penyegaran yang dapat dimiliki akun pengguna atau akun layanan di semua klien. Sebagian besar pengguna normal tidak akan melebihi batas ini tetapi akun pengembang yang digunakan untuk menguji penerapan mungkin.

Jika Anda perlu memberi otorisasi pada beberapa program, mesin, atau perangkat, salah satu solusinya adalah membatasi jumlah klien yang Anda otorisasi per Akun Google menjadi 15 atau 20. Jika Anda adalah admin Google Workspace , Anda dapat membuat pengguna tambahan dengan hak istimewa administratif dan menggunakannya untuk mengotorisasi beberapa klien.

Berurusan dengan kebijakan kontrol sesi untuk organisasi Google Cloud Platform (GCP)

Administrator organisasi GCP mungkin memerlukan autentikasi ulang pengguna yang sering saat mereka mengakses resource GCP, menggunakan fitur kontrol sesi Google Cloud. Kebijakan ini memengaruhi akses ke Google Cloud Console, Google cloud SDK (juga dikenal sebagai gcloud CLI), dan aplikasi OAuth pihak ketiga yang memerlukan cakupan Cloud Platform. Jika pengguna memiliki kebijakan kontrol sesi, pada saat durasi sesi berakhir, panggilan API Anda akan mengalami error serupa dengan yang akan terjadi jika token penyegaran dicabut. Karena durasi sesi bisa sangat terbatas (antara 1 jam hingga 24 jam), skenario ini harus ditangani dengan baik dengan memulai ulang sesi autentikasi.

Demikian pula, Anda tidak boleh menggunakan, atau mendorong penggunaan, kredensial pengguna untuk penyebaran server ke server. Jika kredensial pengguna diterapkan di server untuk pekerjaan atau operasi yang berjalan lama dan pelanggan menerapkan kebijakan kontrol sesi pada pengguna tersebut, aplikasi server akan gagal karena tidak ada cara untuk mengautentikasi ulang pengguna saat durasi sesi berakhir.

Untuk informasi selengkapnya tentang cara membantu pelanggan Anda menerapkan fitur ini, lihat artikel bantuan yang difokuskan pada admin ini.

Perpustakaan klien

Pustaka klien berikut berintegrasi dengan kerangka kerja populer, yang membuat penerapan OAuth 2.0 lebih sederhana. Lebih banyak fitur akan ditambahkan ke perpustakaan seiring waktu.