Halaman ini memberikan informasi latar belakang tentang kunci API dan autentikasi: cara masing-masing digunakan, perbedaan di antara keduanya, dan skenario saat Anda harus mempertimbangkan untuk menggunakan kunci API.
Kunci API ditujukan untuk project, autentikasi ditujukan untuk pengguna
Cloud Endpoints menangani kunci API dan skema autentikasi, seperti Firebase atau Auth0. Perbedaan utama antara keduanya adalah:
Kunci API mengidentifikasi project panggilan — aplikasi atau situs — yang melakukan panggilan ke API.
Token autentikasi mengidentifikasi pengguna — orang — yang menggunakan aplikasi atau situs.
Kunci API memberikan otorisasi project
Untuk menentukan skema yang paling sesuai, Anda harus memahami apa yang dapat diberikan oleh kunci API dan autentikasi.
Kunci API memberikan
Identifikasi project — Identifikasi aplikasi atau project yang melakukan panggilan ke API ini
Otorisasi project — Memeriksa apakah aplikasi panggilan telah diberi akses untuk memanggil API dan telah mengaktifkan API di project-nya
Kunci API tidak seaman token autentikasi (lihat Keamanan kunci API), tetapi kunci API mengidentifikasi aplikasi atau project yang memanggil API. Token ini dibuat di project yang melakukan panggilan, dan Anda dapat membatasi penggunaannya ke lingkungan seperti rentang alamat IP, atau aplikasi Android atau iOS.
Dengan mengidentifikasi project yang melakukan panggilan, Anda dapat menggunakan kunci API untuk mengaitkan informasi penggunaan dengan project tersebut. Kunci API memungkinkan Extensible Service Proxy (ESP) menolak panggilan dari project yang belum diberi akses atau diaktifkan di API.Autentikasi pengguna
Sebaliknya, skema autentikasi biasanya memiliki dua tujuan:
Autentikasi pengguna — Memverifikasi dengan aman bahwa pengguna yang menelepon adalah orang yang mereka klaim.
Otorisasi pengguna — Periksa apakah pengguna harus memiliki akses untuk membuat permintaan ini.
Skema autentikasi memberikan cara yang aman untuk mengidentifikasi pengguna yang menelepon. Endpoint juga memeriksa token autentikasi untuk memverifikasi bahwa token tersebut memiliki izin untuk memanggil API. Berdasarkan autentikasi tersebut, server API akan memutuskan untuk memberikan otorisasi pada permintaan.
Jika Anda memerlukan kemampuan untuk mengidentifikasi pengguna yang melakukan panggilan, lihat Mengautentikasi pengguna.
Meskipun kunci API mengidentifikasi project yang memanggil, kunci tersebut tidak mengidentifikasi pengguna yang memanggil. Misalnya, jika Anda telah membuat aplikasi yang memanggil API, kunci API dapat mengidentifikasi aplikasi yang melakukan panggilan, tetapi tidak dapat mengidentifikasi identitas orang yang menggunakan aplikasi.
Jika Anda memerlukan cara yang lebih aman untuk membatasi project atau layanan mana yang dapat memanggil API Anda, lihat Autentikasi antarlayanan.
Keamanan kunci API
Kunci API umumnya tidak dianggap aman; kunci API biasanya dapat diakses oleh klien, sehingga memudahkan seseorang untuk mencuri kunci API. Setelah dicuri, kunci tidak memiliki masa berlaku, sehingga dapat digunakan tanpa batas waktu, kecuali jika pemilik project mencabut atau membuat ulang kunci. Meskipun pembatasan yang dapat Anda tetapkan pada kunci API mengurangi hal ini, ada pendekatan yang lebih baik untuk otorisasi.
Untuk contoh, lihat Mengautentikasi pengguna.
Kapan harus menggunakan kunci API
API dapat membatasi beberapa atau semua metodenya agar memerlukan kunci API. Sebaiknya lakukan hal ini jika:
Anda ingin memblokir traffic anonim. Kunci API mengidentifikasi traffic aplikasi untuk produsen API, jika developer aplikasi perlu bekerja sama dengan produsen API untuk men-debug masalah atau menampilkan penggunaan aplikasi mereka.
Anda ingin mengontrol jumlah panggilan yang dilakukan ke API.
Anda ingin mengidentifikasi pola penggunaan dalam traffic API. Anda dapat melihat penggunaan aplikasi di API & layanan.
Anda ingin memfilter log menurut kunci API.
Kunci API tidak dapat digunakan untuk:
Mengidentifikasi setiap pengguna — Kunci API tidak mengidentifikasi pengguna, tetapi mengidentifikasi project.
Otorisasi aman.
Mengidentifikasi pembuat project.
Service Infrastructure tidak menyediakan metode untuk langsung mencari project dari kunci API.