Mengamankan API dengan mewajibkan kunci API

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

Yang akan Anda pelajari

Melalui tutorial ini, Anda akan belajar:

  • Buat proxy API yang memerlukan kunci API.
  • Tambahkan produk API.
  • Tambahkan developer dan daftarkan aplikasi.
  • Panggil API Anda dengan kunci API.

Penting untuk melindungi API Anda dari akses yang tidak sah. Salah satu cara untuk melakukannya dengan kunci API (juga disebut kunci publik, kunci konsumen tombol atau kunci aplikasi).

Saat aplikasi membuat permintaan ke API, aplikasi harus menyediakan kunci yang valid. Saat runtime, kebijakan Verify API Key akan memeriksa apakah kunci API yang diberikan:

  • Valid
  • Belum dicabut
  • Mencocokkan kunci API untuk produk API yang mengekspos permintaan sumber daya

Jika kunci valid, permintaan diizinkan. Jika kunci tersebut tidak valid, permintaan akan menyebabkan kegagalan otorisasi.

Dalam tutorial ini, Anda akan membuat proxy API yang memerlukan API yang valid untuk mengaksesnya.

Yang Anda butuhkan

  • Akun Apigee Edge. Jika belum memilikinya, Anda dapat mendaftar dengan petunjuk arah di Membuat akun Apigee Edge.
  • Browser web untuk melakukan panggilan API.
  • (Untuk bagian kredit tambahan, tidak diperlukan) cURL diinstal di komputer Anda untuk melakukan panggilan API dari baris perintah.

Membuat proxy API

Tentang 'mocktarget'

Layanan mocktarget dihosting di Apigee dan menampilkan layanan otomatis dan data skalabel. Pengujian ini tidak memerlukan kunci API atau token akses. Bahkan, Anda dapat mengaksesnya di sebuah {i>browser<i} web Cobalah dengan mengklik yang berikut ini:

http://mocktarget.apigee.net

Target menampilkan Hello, Guest!. Gunakan /help untuk mendapatkan halaman bantuan tentang resource API lain yang tersedia

  1. Buka https://apigee.com/edge, lalu login.
  2. Pindah ke organisasi yang Anda inginkan dengan mengklik nama pengguna Anda di atas bilah navigasi samping untuk menampilkan menu profil pengguna, lalu memilih organisasi dari daftar.

    pilih org di menu profil pengguna
  3. Klik Proxy API pada halaman landing untuk menampilkan API daftar {i>proxy<i}.

    Menu API Edge
  4. Klik + Proxy.
    Tombol Create proxy
  5. Di halaman Create Proxy, pilih Reverse proxy (paling umum).
  6. Di halaman Proxy Details, konfigurasikan proxy sebagai berikut:
    Di kolom ini lakukan ini
    Nama Proxy Masukkan: helloworld_apikey
    Jalur Dasar Project

    Ubah menjadi: /helloapikey

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

    Catatan: Untuk rekomendasi Apigee tentang pembuatan versi API, lihat Pembuatan Versi di Web API Design: The Missing Link e-book.

    API yang sudah ada

    Masukkan: http://mocktarget.apigee.net

    Ini menentukan URL target yang dipanggil Apigee Edge pada ke proxy API.

    Deskripsi Masukkan: hello world protected by API key
  7. Klik Berikutnya.
  8. Di halaman Common Policy, untuk Keamanan: Authorization, pilih API Key, lalu klik Next. Ini akan menambahkan dua kebijakan ke proxy API Anda.
  9. Pada halaman Virtual Hosts, pilih default dan secure, lalu klik Next. Dengan memilih default, Anda dapat memanggil API Anda dengan http://. Pilih secure, memungkinkan Anda memanggil API dengan https://.
  10. Di halaman Summary, pastikan deployment test dipilih, lalu klik Create and deploy.
  11. Anda akan melihat konfirmasi bahwa proxy API baru dan API berhasil dibuat, dan proxy API di-deploy ke lingkungan pengujian Anda.
  12. Klik Edit proxy untuk 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:
    • Memverifikasi Kunci API: Memeriksa panggilan API untuk memastikan panggilan API yang valid Terdapat kunci API (dikirim sebagai parameter kueri).
    • Remove Query Param apikey: Kebijakan MenetapkanMessage yang menghapus kunci API setelah diperiksa, sehingga tidak diteruskan dan terekspos secara berlebihan.
  2. Klik ikon kebijakan Verify API Key di tampilan alur, dan lihat konfigurasi XML kebijakan di tampilan kode yang lebih rendah. Tujuan Elemen <APIKey> memberi tahu kebijakan di tempat yang seharusnya mencari kunci API ketika panggilan dilakukan. Secara {i>default<i}, mencari kunci sebagai parameter kueri yang disebut apikey di HTTP permintaan:

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

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

Coba panggil API

Pada langkah ini, Anda akan membuat panggilan API yang berhasil langsung ke target layanan, maka Anda akan melakukan panggilan yang gagal ke proxy API untuk melihat tapi file itu dilindungi oleh kebijakan.

  1. Berhasil

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

    http://mocktarget.apigee.net
    

    Anda akan mendapatkan respons berhasil ini: Hello, Guest!

  2. Kegagalan

    Sekarang, coba panggil proxy API Anda:

    http://ORG_NAME-test.apigee.net/helloapikey
    

    mengganti ORG_NAME dengan nama Pengaturan Edge.

    Tanpa kebijakan Verify API Key, panggilan ini akan memberi Anda dibandingkan dengan panggilan sebelumnya. Namun dalam kasus ini, Anda harus mendapatkan respons error berikut:

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

    yang berarti, Anda tidak meneruskan kunci API yang valid (seperti parameter kueri).

Pada langkah berikutnya, Anda akan menambahkan produk API.

Menambahkan produk API

Untuk menambahkan produk API menggunakan UI Apigee:

  1. Pilih Publikasikan > Produk API.
  2. Klik +Produk API.
  3. Masukkan Detail produk untuk produk API Anda.

    Kolom Deskripsi
    Nama Nama internal produk API. Larangan menentukan karakter khusus dalam nama.
    Catatan: Anda tidak dapat mengedit nama setelah produk API dibuat. Sebagai contoh, helloworld_apikey-Product.
    Nama tampilan Nama tampilan untuk produk API. Nama tampilan digunakan di UI dan Anda dapat mengeditnya kapan saja. Jika tidak ditentukan, Nilai nama akan digunakan. Bidang ini diisi secara otomatis menggunakan Nilai nama; Anda dapat mengedit atau menghapus isinya. Layar nama dapat berisi karakter khusus. Misalnya, helloworld_apikey-Product.
    Deskripsi Deskripsi produk API. Misalnya, Test product for tutorial.
    Lingkungan Lingkungan yang akan diizinkan aksesnya oleh produk API. Misalnya test atau prod.
    Akses Pilih Publik.
    Menyetujui permintaan akses secara otomatis Aktifkan persetujuan otomatis permintaan kunci untuk API ini dari aplikasi apa pun.
    Kuota Abaikan untuk tutorial ini.
    Cakupan OAuth yang Diizinkan Abaikan untuk tutorial ini.
  4. Di bagian resource API, pilih proxy API yang baru saja Anda dibuat. Misalnya, helloworld_apikey.
  5. Klik Tambahkan.
  6. Di bagian Paths, tambahkan jalur "/".
  7. Klik Tambahkan.
  8. Klik Simpan.

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

Tambahkan developer dan aplikasi ke organisasi

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

Membuat developer

Untuk membuat developer:

  1. Pilih Publikasikan > Developer di menu.
  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 Buat.

Daftarkan aplikasi

Untuk mendaftarkan aplikasi developer:

  1. Pilih Publikasikan > Aplikasi.
  2. Klik + App.
  3. Masukkan hal berikut di jendela New App:

    p
    Di kolom ini lakukan ini
    Name dan Display Name Masukkan: keyser_app
    Perusahaan / Developer Pilih: Developer
    Developer Pilih: Keyser Soze (keyser@example.com)
    URL Callback dan Catatan Biarkan kosong
  4. Di bagian Credentials, pilih Never dari Menu Masa berlaku habis. Kredensial untuk aplikasi ini tidak akan pernah habis masa berlakunya.
  5. Di bagian Produk, klik Tambahkan produk.
  6. Pilih helloworld_apikey-Product.
  7. Klik Tambahkan.
  8. Klik Buat di bagian atas dan di sebelah kanan Detail Aplikasi untuk menyimpan pekerjaan Anda.

Mendapatkan kunci API

Untuk mendapatkan kunci API:

  1. Di halaman Aplikasi (Publikasikan > Aplikasi), klik keyser_app.
  2. Di halaman keyser_app, klik Tampilkan di samping Key di bagian Credentials. Di bagian Product, perhatikan bahwa kunci tersebut terkait dengan helloworld_apikey

    kami.
  3. Pilih dan salin Kunci. Anda akan menggunakannya di langkah berikutnya.

Memanggil API dengan kunci

Setelah memiliki kunci API, Anda dapat menggunakannya untuk memanggil proxy API. Masuk berikut ini di {i>browser<i} web Anda. Mengganti nama organisasi Edge Anda untuk ORG_NAME, dan kunci API untuk API_KEY di bawah. Pastikan tidak ada spasi tambahan di parameter kueri.

http://ORG_NAME-test.apigee.net/helloapikey?apikey=API_KEY

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

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

Perhatikan bahwa secara umum, tidak baik untuk meneruskan kunci API sebagai parameter kueri. Anda harus mempertimbangkan meneruskannya di header HTTP.

Praktik terbaik: Meneruskan kunci di header HTTP

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

  1. Edit proxy API. Pilih Develop > Proxy API > helloworld_apikey, lalu buka tampilan Develop.
  2. Pilih kebijakan Verify API Key, lalu ubah XML kebijakan untuk memberi tahu kebijakan yang harus dilihat di header, bukan di queryparam:

    <APIKey ref="request.header.x-apikey"/>
    
  3. Simpan proxy API untuk men-deploy perubahan.
  4. Buat panggilan API berikut menggunakan cURL untuk meneruskan kunci API sebagai x-apikey. Jangan lupa untuk mengganti nama organisasi.

    curl -v -H "x-apikey: API_KEY" http://ORG_NAME-test.apigee.net/helloapikey
    

Perhatikan bahwa untuk menyelesaikan perubahan sepenuhnya, Anda juga harus mengonfigurasi Kebijakan TetapkanMessage untuk menghapus header, bukan parameter kueri. Contoh:

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

Topik terkait

Berikut adalah beberapa topik yang terkait langsung dengan tutorial ini:

Sedikit lebih dalam lagi, melindungi API dengan kunci API hanyalah sebagian dari langkah ini. Sering kali, Perlindungan API mencakup keamanan tambahan seperti OAuth.

OAuth adalah terbuka yang, singkatnya, bertukar kredensial (seperti nama pengguna dan {i>password<i}) untuk token akses. Token akses adalah string acak yang panjang yang dapat diteruskan melalui pesan pipeline, bahkan dari satu aplikasi ke aplikasi lainnya, tanpa mengorbankan kredensial asli. Akses token sering kali memiliki masa berlaku yang pendek, sehingga token baru akan selalu dibuat.