Menyiapkan validasi kunci API

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Anda dapat menyiapkan validasi kunci API untuk API dengan melampirkan kebijakan jenis Verify API Key. Satu-satunya setelan yang diperlukan untuk kebijakan Verify API Key adalah lokasi yang diharapkan dari kunci API dalam permintaan klien. Proxy API akan memeriksa lokasi yang Anda tetapkan, dan mengekstrak kunci API. Jika kunci API tidak ada di lokasi yang diharapkan, error akan ditampilkan dan permintaan akan ditolak. Kunci API dapat ditempatkan 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 disertakan ke API apa pun yang perlu Anda lindungi.

Dokumentasi lengkap mengenai jenis kebijakan ini dapat ditemukan di topik referensi kebijakan, Verifikasi kebijakan Kunci API.

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 API tersebut dari pesan agar kunci API tidak dikirim melalui kabel ke layanan backend. Anda dapat melakukannya menggunakan kebijakan jenis ReplaceMessage seperti 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 pada PreFlow permintaan, kunci API diverifikasi pada setiap permintaan yang diterima proxy API dari aplikasi klien. Setelah verifikasi, kunci API dihilangkan 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 seperti berikut:

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password 

Profil aplikasi yang ditampilkan untuk panggilan ini menyediakan 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://{org_name}-test.apigee.net/weather/forecastrss?w=12797282

Pesan kegagalan menunjukkan bahwa kebijakan telah 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://{org_name}-test.apigee.net/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"

Hasil yang diharapkan adalah respons yang berhasil dari layanan cuaca.

Modifikasi nilai kunci API dalam permintaan akan mengakibatkan kegagalan otorisasi:

$ curl http://{org_name}-test.apigee.net/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"

Hasil dalam:

OAuth Failure : Consumer Key is Invalid

Ingat, sebagai admin organisasi, Anda dapat mengambil kunci konsumen untuk aplikasi apa pun yang terdaftar di organisasi:

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password