Bagikan melalui


Bagian 3: Contoh implementasi API pihak ketiga

Bagian sebelumnya: Persyaratan autentikasi

Dalam skenario contoh kami, aplikasi utama menggunakan API pihak ketiga yang diamankan dengan kunci akses. Bagian ini menunjukkan API menggunakan Azure Functions, tetapi prinsip yang sama berlaku terlepas dari bagaimana atau di mana API diimplementasikan—apakah Anda menghosting aplikasi di penyedia cloud lain atau server web tradisional.

Aspek utamanya adalah bahwa setiap permintaan klien ke titik akhir yang dilindungi harus menyertakan kunci akses, yang harus dikelola aplikasi dengan aman. Bagian ini memberikan gambaran umum tentang cara menerapkan API tersebut menggunakan Azure Functions, tetapi Anda dapat menyesuaikan prinsip-prinsip dengan kebutuhan spesifik Anda.

Contoh implementasi API pihak ketiga

Contoh API pihak ketiga adalah titik akhir sederhana yang mengembalikan angka acak antara 1 dan 999. API diamankan dengan kunci akses, yang harus disediakan dalam permintaan untuk mengakses titik akhir. Untuk tujuan demonstrasi, API ini disebarkan ke titik akhir, https://msdocs-example-api.azurewebsites.net/api/RandomNumber. Namun, untuk memanggil API, Anda harus menyediakan kunci d0c5atM1cr0s0ft akses baik dalam ?code= parameter URL atau di 'x-functions-key' properti header HTTP. Misalnya, setelah Anda menyebarkan aplikasi dan API, coba URL ini di browser atau curl: https://msdocs-example-api.azurewebsites.net/api/RandomNumber?code=d0c5atM1cr0s0ft.

Jika kunci akses valid, titik akhir mengembalikan respons JSON yang berisi satu properti, "nilai", nilainya adalah angka antara 1 dan 999, seperti {"value": 959}.

Titik akhir diimplementasikan di Python dan disebarkan ke Azure Functions. Kodenya adalah sebagai berikut:

import logging
import random
import json

import azure.functions as func


def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('RandomNumber invoked via HTTP trigger.')

    random_value = random.randint(1, 1000)
    dict = { "value" : random_value }
    return func.HttpResponse(json.dumps(dict))

Dalam repositori sampel, kode ini ditemukan di bawah third_party_api/RandomNumber/__init__.py. Folder, RandomNumber, menyediakan nama fungsi dan __init__.py berisi kode. File lain dalam folder, function.json, menjelaskan kapan fungsi dipicu. File lain di folder induk third_party_api menyediakan detail untuk aplikasi Azure Function yang menghosting fungsi itu sendiri.

Untuk menyebarkan kode, skrip provisi sampel melakukan langkah-langkah berikut:

  1. Buat akun penyimpanan cadangan untuk Azure Functions dengan perintah Azure CLI, az storage account create untuk mengelola operasi status dan internal.

  2. Buat aplikasi Azure Functions dengan perintah Azure CLI, az function app create.

  3. Setelah menunggu 60 detik agar host sepenuhnya tersedia, sebarkan kode menggunakan perintah Azure Functions Core Tools , func azure functionapp publish.

  4. Tetapkan kunci akses, d0c5atM1cr0s0ft, ke fungsi . (Lihat Mengamankan Azure Functions untuk latar belakang tentang kunci fungsi.)

    Dalam skrip provisi, langkah ini dilakukan dengan menggunakan perintah az functionapp function keys set Azure CLI.

    Komentar disertakan untuk menunjukkan cara langkah ini dilakukan melalui panggilan REST API ke API Manajemen Kunci Fungsi apabila diinginkan. Untuk memanggil REST API tersebut, panggilan REST API lain harus dilakukan terlebih dahulu untuk mengambil kunci master aplikasi Fungsi.

Anda juga dapat menetapkan kunci akses melalui portal Microsoft Azure. Pada halaman untuk aplikasi Functions, pilih Functions, lalu pilih fungsi tertentu untuk diamankan (yang dinamai RandomNumber dalam contoh ini). Pada halaman fungsi, pilih Tombol Fungsi untuk membuka halaman tempat Anda dapat membuat dan mengelola kunci ini.