Halaman ini memberikan informasi latar belakang tentang autentikasi dan kunci API: cara penggunaan masing-masing penggunaan, perbedaan antara keduanya, dan skenario saat Anda harus mempertimbangkan penggunaan kunci API.
Kunci API untuk project, autentikasi untuk pengguna
Cloud Endpoints menangani kunci API dan skema autentikasi, seperti Firebase atau Auth0. Perbedaan utama antara keduanya adalah:
Kunci API mengidentifikasi project yang melakukan panggilan, yaitu aplikasi atau situs, yang melakukan panggilan ke API.
Token autentikasi mengidentifikasi pengguna, yaitu orang yang menggunakan aplikasi atau situs tersebut.
Kunci API memberikan otorisasi project
Untuk memutuskan skema mana yang paling sesuai, penting untuk memahami kunci API dan autentikasi apa yang dapat disediakan.
Kunci API menyediakan
Identifikasi project — Mengidentifikasi aplikasi atau project yang melakukan panggilan ke API ini
Otorisasi project — Periksa apakah aplikasi pemanggil telah diberi akses untuk memanggil API dan telah mengaktifkan API dalam project-nya
Kunci API tidak seaman token autentikasi (lihat Keamanan kunci API), tetapi kunci API mengidentifikasi aplikasi atau project yang memanggil API. ID tersebut dihasilkan pada project yang melakukan panggilan, dan Anda dapat membatasi penggunaannya di 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 tidak diberi akses atau diaktifkan di API.Autentikasi pengguna
Sebaliknya, skema otentikasi biasanya memiliki dua tujuan:
Autentikasi pengguna — Memverifikasi dengan aman bahwa pengguna yang melakukan panggilan adalah orang yang sesuai dengan klaim mereka.
Otorisasi pengguna — Periksa apakah pengguna seharusnya memiliki akses untuk membuat permintaan ini.
Skema autentikasi menyediakan 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 mengizinkan permintaan.
Jika Anda memerlukan kemampuan untuk mengidentifikasi pengguna yang melakukan panggilan, lihat bagian Mengautentikasi pengguna.
Meskipun mengidentifikasi project yang melakukan panggilan, kunci API tidak mengidentifikasi pengguna yang melakukan panggilan. Misalnya, jika Anda telah membuat aplikasi yang memanggil API, kunci API dapat mengidentifikasi aplikasi yang melakukan panggilan, tetapi bukan identitas orang yang menggunakan aplikasi tersebut.
Jika Anda memerlukan cara yang lebih aman untuk membatasi project atau layanan yang dapat memanggil API, lihat Autentikasi antar-layanan.
Keamanan kunci API
Kunci API umumnya tidak dianggap aman; 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 tersebut. Meskipun pembatasan yang dapat Anda tetapkan pada kunci API mengurangi hal ini, ada pendekatan yang lebih baik untuk otorisasi.
Misalnya, baca bagian Mengautentikasi pengguna.
Kapan menggunakan kunci API
API dapat membatasi sebagian atau semua metodenya untuk mewajibkan kunci API. Hal ini wajar jika:
Anda ingin memblokir traffic anonim. Kunci API mengidentifikasi traffic aplikasi untuk produser API, jika developer aplikasi perlu bekerja sama dengan produser API untuk men-debug masalah atau menampilkan penggunaan aplikasi mereka.
Anda ingin mengontrol jumlah panggilan yang dilakukan ke API.
Anda ingin mengidentifikasi pola penggunaan di traffic API Anda. Anda dapat melihat penggunaan aplikasi di API & layanan.
Anda ingin memfilter log menurut kunci API.
Kunci API tidak dapat digunakan untuk:
Mengidentifikasi pengguna individual — Kunci API tidak mengidentifikasi pengguna, tetapi mengidentifikasi project.
Otorisasi yang aman.
Mengidentifikasi pembuat suatu proyek.
Infrastruktur Layanan tidak menyediakan metode untuk mencari project secara langsung dari kunci API.