Bagikan melalui


Memanggil API dari API lain

Bagaimana Anda, sebagai pengembang, memastikan Zero Trust saat Anda memiliki satu API yang perlu memanggil API lain? Dalam artikel ini, Anda mempelajari cara mengembangkan aplikasi dengan aman saat bekerja atas nama pengguna.

Saat pengguna mendorong UI aplikasi, aplikasi mungkin menggunakan izin yang didelegasikan sehingga API mengetahui pengguna mana yang atas nama aplikasinya berfungsi. Ini memeriksa klaim subjek (sub) atau klaim ID objek (oid) dan ID penyewa (tid) dalam token akses yang disediakan aplikasi saat memanggil API. API tidak bergantung pada aplikasi yang tidak tepercaya, yang hanya merupakan panggilan yang berasal dari suatu tempat di jaringan. Sebagai gantinya, ini memvalidasi token untuk memastikan bahwa API hanya berfungsi atas nama pengguna aplikasi yang diverifikasi ID Microsoft Entra.

Ketika satu API (kami menyebutnya sebagai API Asli) memanggil api lain, sangat penting bahwa API yang kami panggil (kami menyebutnya sebagai API Hilir) mengikuti proses validasi. API Hilir tidak dapat mengandalkan sumber jaringan yang tidak tepercaya. Ini harus mendapatkan identitas pengguna dari token akses yang divalidasi dengan benar.

Jika API Hilir tidak mengikuti proses validasi yang tepat, API Hilir harus mengandalkan API Asli untuk memberikan identitas pengguna dengan cara lain. API Hilir mungkin salah menggunakan izin aplikasi untuk melakukan operasi. API Utama kemudian menjadi satu-satunya otoritas atas pengguna mana yang bisa mencapai hasil tertentu terhadap API Hilir. API yang Asli mungkin sengaja atau tidak sengaja memungkinkan pengguna untuk melakukan tugas yang sebaliknya tidak bisa dilakukan. Misalnya, satu pengguna dapat mengubah detail pengguna lain atau membaca dan memperbarui dokumen yang tidak dapat diakses pengguna. Validasi yang tidak tepat dapat menyebabkan masalah keamanan yang serius.

Untuk keamanan yang lebih baik, API Asli memperoleh token akses izin yang didelegasikan untuk disediakan ke API Hilir saat API Asli melakukan panggilan. Mari kita telusuri cara kerjanya.

  1. Aplikasi Klien memperoleh token akses untuk memanggil Api Asli. Aplikasi Klien memperoleh token akses izin yang didelegasikan ke API Asli. Token akses izin yang didelegasikan memungkinkannya bekerja atas nama pengguna untuk memanggil API Asli yang memerlukan otorisasi.
  2. Aplikasi Klien memberikan token akses ke API Asli. Aplikasi Klien memberikan token akses ke API Asli. API Asli sepenuhnya memvalidasi dan memeriksa token akses untuk menentukan identitas pengguna Aplikasi Klien.
  3. API asli melakukan validasi dan penerapan token. Setelah Aplikasi Klien memberikan token akses ke API Asli, API Asli melakukan validasi dan penerapan token. Jika semuanya baik, API melanjutkan dan melayani permintaan untuk Aplikasi Klien.
  4. API asli tidak dapat menggunakan token akses untuk memanggil API Hilir. API Asli ingin memanggil API Hilir. Namun, API Asli tidak dapat menggunakan token akses untuk memanggil API Hilir.
  5. API asli dialihkan kembali ke Microsoft Entra ID. API Asli perlu kembali ke ID Microsoft Entra. Ini memerlukan token akses untuk memanggil API Hilir atas nama pengguna. API Asli menyediakan token yang diterima API Asli dari Aplikasi Klien dan kredensial klien API Asli.
  6. Microsoft Entra ID melakukan pemeriksaan. ID Microsoft Entra memeriksa hal-hal seperti persetujuan atau penegakan akses bersyar. Anda mungkin harus kembali ke klien panggilan Anda dan memberikan alasan untuk tidak bisa mendapatkan token. Anda biasanya akan menggunakan proses tantangan klaim untuk kembali ke aplikasi panggilan dengan informasi mengenai persetujuan yang tidak diterima (seperti terkait dengan kebijakan akses bersyarkat). Jika semuanya baik-baik saja, ID Microsoft Entra mengeluarkan token akses ke API Asli untuk memanggil API Hilir atas nama pengguna.
  7. API asli memiliki konteks pengguna dengan alur On-Behalf-Of. Proses On-Behalf-Of flow (OBO) memungkinkan API untuk mempertahankan konteks pengguna saat API hilir dipanggil.
  8. API asli memanggil API Hilir. Panggil API bagian hilir. Token yang diterima API Hilir memiliki klaim audiens (aud) yang tepat yang menunjukkan API Hilir. Token mencakup cakupan untuk persetujuan yang diberikan dan identitas pengguna aplikasi asli. API Hilir dapat menerapkan izin yang efektif dengan benar untuk memastikan bahwa pengguna yang diidentifikasi memiliki izin untuk menyelesaikan tugas yang diminta. Anda ingin menggunakan atas nama alur untuk memperoleh token api untuk memanggil API lain untuk memastikan bahwa konteks pengguna diteruskan ke semua API Hilir.

Opsi terbaik: API Asli melakukan alur Atas Nama

Opsi terbaik adalah bagi API Asli untuk menjalankan aliran On-Behalf-Of (OBO). Jika API Hilir menerima token yang benar, API dapat merespons dengan benar. Ketika API bertindak atas nama pengguna dan perlu memanggil API lain, API harus menggunakan OBO untuk memperoleh token akses izin yang didelegasikan untuk memanggil API Hilir atas nama pengguna. API tidak boleh menggunakan izin aplikasi untuk memanggil API Hilir saat API bertindak atas nama pengguna.

Langkah berikutnya