Menyiapkan validasi kunci API

Halaman ini berlaku untuk Apigee dan Apigee hybrid.

Lihat Dokumentasi Apigee Edge.

Anda dapat menyiapkan validasi kunci API untuk API dengan melampirkan kebijakan jenis Verify API Key. Tujuan satu-satunya setelan yang diperlukan untuk kebijakan VerifyAPIKey yang merupakan lokasi kunci API yang diharapkan dalam permintaan klien. Proxy API akan memeriksa lokasi yang Anda tentukan, dan mengekstrak kunci API. Jika kunci API tidak ada di lokasi yang diharapkan, akan muncul error dan permintaan ditolak. Kunci API dapat ditemukan dalam parameter kueri, parameter formulir, atau parameter {i>header<i}.

Misalnya, konfigurasi kebijakan di bawah ini menentukan lokasi kunci yang diharapkan sebagai kueri parameter bernama apikey. Permintaan yang berhasil harus menampilkan kunci API sebagai 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 atas permintaan. Oleh karena itu, setelah kunci API diverifikasi, sebaiknya hapus kunci API dari pesan sehingga kunci API tidak dikirim melalui kabel ke layanan backend. Anda bisa 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 tersebut harus dilampirkan ke Alur proxy API sebagai Langkah pemrosesan. Dengan menerapkan kebijakan tersebut, 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 Anda 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"

Jika $TOKEN ditetapkan ke token akses OAuth 2.0 Anda, seperti yang dijelaskan di Mendapatkan token akses OAuth 2.0. Untuk mengetahui informasi tentang opsi curl yang digunakan dalam contoh ini, lihat Menggunakan curl. Untuk deskripsi tentang variabel lingkungan yang digunakan, lihat Menetapkan variabel lingkungan untuk permintaan API Apigee.

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 Anda ke Compute Engine API.

Misalnya, permintaan yang tidak menyertakan kunci API akan menghasilkan otorisasi gagal.

curl http://apitest.examplepetstore.com/weather/forecastrss?w=12797282

Pesan kegagalan menunjukkan bahwa kebijakan telah memeriksa kunci API, tetapi tidak menemukan kunci API yang valid kunci:

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 berhasil:

curl http://apitest.examplepetstore.com/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"

Hasil yang diharapkan adalah respons yang berhasil dari layanan cuaca.

Memodifikasi nilai nilai kunci API dalam permintaan akan menghasilkan otorisasi gagal:

curl http://apitest.examplepetstore.com/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"

Hasil dalam:

OAuth Failure : Consumer Key is Invalid