Mengamankan API dengan mewajibkan kunci API

Halaman ini berlaku untuk Apigee dan Apigee Hybrid.

Lihat dokumentasi Apigee Edge.

Video: Tonton video singkat ini untuk mengetahui pengantar tentang cara mengamankan API.

Yang akan Anda pelajari

Tutorial ini menjelaskan cara:

  • Membuat proxy API yang memerlukan kunci API.
  • Buat produk API, developer, dan aplikasi developer.
  • Panggil API Anda dengan kunci API.

Penting untuk melindungi API Anda dari akses yang tidak sah. Salah satu cara untuk melakukannya adalah dengan kunci API.

Saat aplikasi membuat permintaan ke proxy API yang dikonfigurasi untuk memverifikasi kunci API, aplikasi tersebut harus menyediakan kunci yang valid. Saat runtime, kebijakan Verify API Key akan memastikan kunci API yang diberikan:

  • Valid
  • Belum dicabut
  • Mencocokkan kunci API untuk produk API yang mengekspos resource yang diminta

Jika kunci valid, permintaan akan diizinkan. Jika kunci tidak valid, permintaan akan mengakibatkan kegagalan otorisasi.

Membuat proxy API

  1. Buka UI Apigee dan login.
  2. Pilih organisasi Anda menggunakan menu drop-down di sudut kiri atas UI.
  3. Klik Develop > API Proxy untuk menampilkan daftar proxy API.

  4. Klik Buat Baru.
    Tombol buat proxy
  5. Di wizard Build a Proxy, pilih Reverse proxy (paling umum).
  6. Konfigurasikan proxy sebagai berikut:
    Di kolom ini lakukan ini
    Nama Proxy Masukkan: helloworld_apikey
    Jalur Dasar Project

    Ubah menjadi: /helloapikey

    Jalur Dasar Project adalah bagian dari URL yang digunakan untuk membuat permintaan ke proxy API.

    Deskripsi Masukkan: hello world protected by API key
    Target (API yang Ada)

    Masukkan: http://mocktarget.apigee.net

    Atribut ini menentukan URL target yang dipanggil Apigee pada permintaan ke proxy API. Target ini hanya menampilkan respons sederhana: Hello, Guest!.

  7. Klik Next.
  8. Di halaman Kebijakan umum, pilih Kunci API. Opsi ini secara otomatis menambahkan dua kebijakan ke proxy API Anda dan membuat produk API yang diperlukan untuk membuat kunci API.
  9. Klik Next.
  10. Pada halaman Summary, pastikan lingkungan deployment dipilih, lalu klik Create and deploy.
  11. Klik Edit proxy guna menampilkan halaman Overview untuk proxy API.

Lihat kebijakan

  1. Di editor proxy API, klik tab Develop. Anda akan melihat bahwa dua kebijakan telah ditambahkan ke alur permintaan proxy API:
    • Verify API Key – Memeriksa panggilan API untuk memastikan kunci API yang valid ada (dikirim sebagai parameter kueri).
    • Remove Query Param apikey – Kebijakan Tetapkan Pesan yang menghapus kunci API setelah diperiksa, sehingga tidak diteruskan dan terekspos jika tidak perlu.
  2. Klik ikon kebijakan Verify API Key di tampilan alur, dan lihat konfigurasi XML kebijakan pada tampilan kode bawah. Elemen <APIKey> akan memberi tahu kebijakan tempat elemen tersebut harus mencari kunci API ketika panggilan dilakukan. Secara default, metode ini akan mencari kunci sebagai parameter kueri yang disebut apikey dalam permintaan HTTP:

    <APIKey ref="request.queryparam.apikey" />
    

    Nama apikey bersifat arbitrer dan dapat berupa properti apa pun yang berisi kunci API.

Mencoba memanggil API

Pada langkah ini, Anda akan melakukan panggilan API yang berhasil secara langsung ke layanan target, lalu melakukan panggilan yang gagal ke proxy API untuk melihat bagaimana proxy tersebut dilindungi oleh kebijakan.

  1. Berhasil

    Di browser web, buka alamat berikut. Ini adalah layanan target yang dikonfigurasi oleh proxy API untuk meneruskan permintaan, tetapi untuk saat ini Anda akan langsung mendapatkannya:

    http://mocktarget.apigee.net
    

    Anda akan mendapatkan respons yang berhasil ini: Hello, Guest!

  2. Kegagalan

    Sekarang coba panggil proxy API Anda:

    curl -v -k https://YOUR_ENV_GROUP_HOSTNAME/helloapikey

    dengan YOUR ENV_GROUP_HOSTNAME adalah nama host grup lingkungan. Lihat Menemukan nama host grup lingkungan.

    Tanpa kebijakan Verify API Key, panggilan ini akan memberikan respons yang sama seperti panggilan sebelumnya. Namun, dalam kasus ini, Anda akan mendapatkan respons error berikut:

    {"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}
    

    yang berarti, dengan benar, Anda tidak meneruskan kunci API yang valid (sebagai parameter kueri).

Pada langkah berikutnya, Anda akan mendapatkan kunci API yang diperlukan.

Menambahkan produk API

Untuk menambahkan produk API menggunakan UI Apigee:

  1. Pilih Publish > API Products.
  2. Klik +Create.
  3. Masukkan Detail Produk untuk produk API Anda.
    Kolom Deskripsi
    Nama Nama internal produk API. Jangan cantumkan karakter khusus dalam nama.
    Catatan: Anda tidak dapat mengedit nama setelah produk API dibuat.
    Nama tampilan Nama tampilan untuk produk API. Nama tampilan digunakan di UI dan Anda dapat mengeditnya kapan saja. Jika tidak ditentukan, nilai Name akan digunakan. Kolom ini diisi secara otomatis menggunakan nilai Nama; Anda dapat mengedit atau menghapus kontennya. Nama tampilan dapat berisi karakter khusus.
    Deskripsi Deskripsi produk API.
    Lingkungan Lingkungan yang akan diizinkan oleh produk API. Misalnya test atau prod.
    Akses Pilih Public.
    Menyetujui permintaan akses secara otomatis Aktifkan persetujuan otomatis permintaan kunci untuk produk API ini dari aplikasi apa pun.
    Kuota Abaikan tutorial ini.
    Cakupan OAuth yang Diizinkan Abaikan tutorial ini.
  4. Di bagian Operasi, klik TAMBAHKAN OPERASI.
  5. Pada bidang Proxy API, pilih proxy API yang baru saja Anda buat.
  6. Dalam kolom Jalur, masukkan "/". Abaikan kolom lainnya.
  7. Klik Save untuk menyimpan Operasi.
  8. Klik Save untuk menyimpan produk API.

Tambahkan developer dan aplikasi ke organisasi Anda

Selanjutnya, kita akan menyimulasikan alur kerja developer yang mendaftar untuk menggunakan API Anda. Developer akan memiliki satu atau beberapa aplikasi yang memanggil API Anda, dan setiap aplikasi akan mendapatkan kunci API yang unik. Hal ini memberi Anda, sebagai penyedia API, kontrol yang lebih terperinci atas akses ke API dan pelaporan yang lebih terperinci tentang traffic API menurut aplikasi.

Membuat developer

Untuk membuat developer:

  1. Pilih Publikasikan > Developer di menu.
    Catatan: Jika Anda masih berada di layar Pengembangan, klik "<" menurut DEVELOP untuk menampilkan menu, lalu pilih Publikasikan > Developer
  2. Klik + Developer.
  3. Masukkan kode berikut di jendela Developer Baru:
    Di kolom ini enter
    Nama Depan Keyser
    Nama Belakang Soze
    Username keyser
    Email keyser@example.com
  4. Klik Create.

Daftarkan aplikasi

Untuk mendaftarkan aplikasi developer:

  1. Pilih Publikasikan > Aplikasi.
  2. Klik + Aplikasi.
  3. Masukkan kode berikut di jendela Aplikasi Developer Baru:
    Di kolom ini lakukan ini
    Name dan Display Name Masukkan: keyser_app
    Developer Pilih: Keyser Soze (keyser@example.com)
    URL Panggilan Balik dan Catatan Biarkan kosong
  4. Di bagian Credentials, pilih Jangan Pernah. Masa berlaku kredensial untuk aplikasi ini tidak akan pernah berakhir.
  5. Klik Tambahkan produk.
  6. Pilih produk yang baru saja Anda buat.
  7. Klik Create.

Mendapatkan kunci API

Untuk mendapatkan kunci API:

  1. Di halaman Apps (Publish > Apps), klik keyser_app.
  2. Di halaman keyser_app, klik Show di samping Key di bagian Credentials. Perhatikan bahwa kunci tersebut berkaitan dengan produk yang Anda buat.
  3. Pilih dan salin kunci. Anda akan menggunakannya di langkah berikutnya.

Memanggil API dengan kunci

Setelah memiliki kunci API, Anda bisa menggunakannya untuk memanggil proxy API. Tempelkan kunci API seperti yang ditampilkan, sebagai parameter kueri. Pastikan tidak ada spasi tambahan di parameter kueri.

curl -v -k https://YOUR_ENV_GROUP_HOSTNAME/helloapikey?apikey=your_api_key

Kini, saat memanggil proxy API, Anda akan mendapatkan respons ini: Hello, Guest!

Selamat! Anda telah membuat proxy API dan melindunginya dengan mewajibkan kunci API yang valid disertakan dalam panggilan.

Perhatikan bahwa secara umum bukanlah praktik yang baik untuk meneruskan kunci API sebagai parameter kueri. Sebaiknya pertimbangkan untuk meneruskannya di header HTTP.

Praktik terbaik: Meneruskan kunci di header HTTP

Pada langkah ini, Anda akan memodifikasi proxy untuk mencari kunci API dalam header bernama x-apikey.

  1. Edit proxy API. Pilih Develop > API Proxies > helloworld_apikey, lalu buka tampilan Develop.
  2. Pilih kebijakan Verify API Key, lalu ubah XML kebijakan untuk memberi tahu kebijakan agar terlihat di header, bukan di queryparam:

    <APIKey ref="request.header.x-apikey"/>
    
  3. Simpan proxy API dan gunakan Deploy untuk men-deploy-nya.
  4. Lakukan panggilan API berikut menggunakan cURL untuk meneruskan kunci API sebagai header yang disebut x-apikey. Jangan lupa untuk mengganti nama organisasi Anda.

    curl -v -H "x-apikey: {api_key_goes_here}" http://YOUR_ENV_GROUP_HOSTNAME/helloapikey

Perhatikan bahwa untuk menyelesaikan perubahan sepenuhnya, Anda juga harus mengonfigurasi kebijakan Tetapkan Pesan untuk menghapus header, bukan parameter kueri. Contoh:

<Remove>
  <Headers>
      <Header name="x-apikey"/>
  </Headers>
</Remove>

Topik terkait

Berikut adalah beberapa topik yang terkait dengan produk dan kunci API:

Perlindungan API sering kali melibatkan keamanan tambahan seperti OAuth, yaitu protokol terbuka yang bertukar kredensial (seperti nama pengguna dan sandi) dengan token akses. Token akses adalah string acak panjang yang dapat diteruskan melalui pipeline pesan, termasuk dari aplikasi ke aplikasi, tanpa mengorbankan kredensial asli.

Untuk ringkasan topik terkait keamanan, lihat Mengamankan proxy.