Halaman ini berlaku untuk Apigee dan Apigee hybrid.
Lihat dokumentasi Apigee Edge.
Anda dapat menyiapkan validasi kunci API untuk API dengan melampirkan kebijakan jenis Verifikasi Kunci API. Satu-satunya setelan yang diperlukan untuk kebijakan VerifyAPIKey adalah lokasi yang diharapkan dari kunci API dalam permintaan klien. Proxy API akan memeriksa lokasi yang Anda tentukan, dan mengekstrak kunci API. Jika kunci API tidak ada di lokasi yang diharapkan, error akan ditampilkan dan permintaan akan ditolak. Kunci API dapat ditemukan di parameter kueri, parameter formulir, atau header HTTP.
Misalnya, konfigurasi kebijakan di bawah menentukan lokasi kunci yang diharapkan sebagai parameter kueri
bernama apikey
. Permintaan yang berhasil harus menampilkan kunci API sebagai parameter kueri yang ditambahkan ke permintaan, misalnya,?apikey=Y7yeiuhcbKJHD790
.
Untuk memverifikasi kunci API, buat kebijakan berikut:
<VerifyAPIKey name="APIKeyValidation"> <APIKey ref="request.queryparam.apikey"/> </VerifyAPIKey>
Kebijakan ini dapat dilampirkan ke API apa pun yang perlu Anda lindungi.
Dokumentasi komprehensif tentang jenis kebijakan ini dapat ditemukan di topik referensi kebijakan, kebijakan VerifyAPIKey.
Proxy API secara otomatis meneruskan semua header HTTP dan parameter kueri yang ada
pada permintaan. Oleh karena itu, setelah kunci API diverifikasi, sebaiknya hapus kunci tersebut dari
pesan agar kunci API tidak dikirim melalui jaringan ke layanan backend. Anda dapat melakukannya
menggunakan kebijakan jenis AssignMessage
sebagai berikut:
<AssignMessage name="StripApiKey"> <DisplayName>Remove Query Param</DisplayName> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"></AssignTo> </AssignMessage>
Lampiran kebijakan
Kebijakan harus dilampirkan ke Alur proxy API sebagai Langkah pemrosesan. Dengan menerapkan kebijakan
ke permintaan PreFlow
, kunci API diverifikasi pada setiap permintaan yang diterima oleh proxy API dari
aplikasi klien. Setelah verifikasi, kunci API akan dihapus dari permintaan keluar.
Lampirkan kebijakan ke ProxyEndpoint proxy API yang akan dilindungi sebagai berikut:
<ProxyEndpoint name="default"> <PreFlow> <Request> <Step><Name>APIKeyValidation</Name></Step> <Step><Name>StripApiKey</Name></Step> </Request> </PreFlow>
Setelah melampirkan kebijakan, deploy proxy API.
Mengirim permintaan dengan kunci API yang valid
Sebagai admin di organisasi, Anda dapat mengambil kunci API aplikasi apa pun sebagai berikut:
curl "https://apigee.googleapis.com/v1/organizations/$ORG/developers/$DEVELOPER_EMAIL/apps/$APP \ -H "Authorization: Bearer $TOKEN"
Dengan $TOKEN
ditetapkan ke token akses OAuth 2.0 Anda, seperti yang dijelaskan dalam
Mendapatkan token akses OAuth 2.0. Untuk informasi tentang opsi curl
yang digunakan dalam contoh ini, lihat
Menggunakan curl. Untuk deskripsi variabel lingkungan yang digunakan,
lihat Menetapkan variabel lingkungan untuk permintaan Apigee API.
Profil aplikasi yang ditampilkan untuk panggilan ini memberikan kunci konsumen (kunci API) dan rahasia. Nilai kunci konsumen adalah nilai yang Anda gunakan untuk kunci API dalam permintaan ke API yang dilindungi.
Misalnya, permintaan yang tidak menyertakan kunci API akan mengakibatkan kegagalan otorisasi.
curl http://apitest.examplepetstore.com/weather/forecastrss?w=12797282
Pesan kegagalan menunjukkan bahwa kebijakan memeriksa kunci API, tetapi tidak menemukan kunci yang valid:
OAuth Failure : Could not resolve the app key with variable request.queryparam.apikey
Jika kunci konsumen untuk aplikasi disertakan sebagai parameter kueri, hasil yang diharapkan adalah otorisasi yang berhasil:
curl http://apitest.examplepetstore.com/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"
Hasil yang diharapkan adalah respons berhasil dari layanan cuaca.
Mengubah nilai kunci API dalam permintaan akan menyebabkan kegagalan otorisasi:
curl http://apitest.examplepetstore.com/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"
Menghasilkan:
OAuth Failure : Consumer Key is Invalid