Mengamankan API Azure API Management dengan Azure AD B2C
Pelajari cara membatasi akses ke API Management API Azure untuk klien yang telah diautentikasi dengan Azure Active Directory B2C (Azure AD B2C). Ikuti instruksi dalam artikel ini untuk membuat dan menguji kebijakan masuk di Azure API Management yang membatasi akses hanya ke permintaan yang menyertakan token akses yang diterbitkan Azure AD B2C yang valid.
Prasyarat
Sebelum memulai, pastikan Anda memiliki sumber daya berikut:
- Penyewa Azure AD B2C
- Aplikasi yang terdaftar di penyewa Anda
- Alur pengguna yang dibuat di penyewa Anda
- API yang diterbitkan di Azure API Management
- (Opsional) Platform Postman untuk menguji akses aman
Dapatkan ID aplikasi Azure AD B2C
Saat Anda mengamankan API di Azure API Management dengan Azure AD B2C, Anda memerlukan beberapa nilai untuk kebijakan masuk yang Anda buat di Azure API Management. Pertama, rekam ID aplikasi dari aplikasi yang telah Anda buat sebelumnya di penyewa Azure AD B2C Anda. Jika Anda menggunakan aplikasi yang Anda buat untuk memenuhi prasyarat, gunakan ID aplikasi untuk webapp1.
Untuk mendaftarkan aplikasi di penyewa Azure AD B2C, Anda dapat menggunakan pengalaman Pendaftaran aplikasi kami yang baru dan terpadu atau pengalaman Aplikasi lama kami. Pelajari lebih lanjut Pengalaman pendaftaran baru.
- Masuk ke portal Azure.
- Jika Anda memiliki akses ke beberapa penyewa, pilih ikon Pengaturan di menu atas untuk beralih ke penyewa Azure AD B2C Anda dari menu Direktori + langganan.
- Di panel kiri, pilih Azure AD B2C. Atau, Anda dapat memilih Semua layanan, lalu cari dan pilih Azure AD B2C.
- Pilih Pendaftaran aplikasi, dan pilih tab Aplikasi yang dimiliki.
- Rekam nilai di kolom ID Aplikasi (klien) untuk webapp1 atau untuk aplikasi lain yang telah Anda buat sebelumnya.
Mendapatkan titik akhir pengeluar token
Selanjutnya, dapatkan URL konfigurasi terkenal untuk salah satu alur pengguna Azure AD B2C Anda. Anda juga memerlukan URI titik akhir pengeluar token yang ingin Anda dukung dalam Azure API Management.
Di portal Microsoft Azure, buka penyewa Azure AD B2C Anda.
Di bawah Kebijakan, pilih Alur pengguna.
Pilih kebijakan yang ada (misalnya, B2C_1_signupsignin1), lalu pilih Jalankan alur pengguna.
Rekam URL dalam hyperlink yang ditampilkan di judul Jalankan alur pengguna di dekat bagian atas halaman. URL ini adalah titik akhir penemuan yang diketahui dari OpenID Connect untuk alur pengguna. Anda akan menggunakannya di bagian berikutnya saat Anda mengonfigurasi kebijakan masuk di API Management Azure.
Pilih hyperlink untuk membuka halaman konfigurasi yang sudah diketahui dari OpenID Connect.
Di halaman yang terbuka di browser Anda, rekam nilai
issuer
. Contohnya:https://<tenant-name>.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
Anda akan menggunakan nilai ini di bagian berikutnya saat mengonfigurasi API di Azure API Management.
Anda sekarang harus memiliki dua URL yang direkam untuk digunakan di bagian berikutnya: URL titik akhir konfigurasi terkenal OpenID Connect dan URI pengeluarnya. Contohnya:
https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/B2C_1_signupsignin1/v2.0/.well-known/openid-configuration
https://<tenant-name>.b2clogin.com/99999999-0000-0000-0000-999999999999/v2.0/
Mengonfigurasi kebijakan masuk di Azure API Management
Kini Anda siap menambahkan kebijakan masuk di Azure API Management yang memvalidasi panggilan API. Dengan menambahkan kebijakan validasi token web JSON (JWT) yang memverifikasi audiens dan pengeluar dalam token akses, Anda dapat memastikan bahwa hanya panggilan API dengan token yang valid yang diterima.
Di portal Microsoft Azure, buka instans Azure API Management Anda.
Pilih API.
Pilih API yang ingin Anda amankan dengan Azure AD B2C.
Pilih tab Desain.
Di bagian Pemrosesan masuk, pilih </> untuk membuka editor kode kebijakan.
Tempatkan tag
<validate-jwt>
berikut di dalam kebijakan<inbound>
, lalu lakukan hal berikut:a. Perbarui nilai
url
di elemen<openid-config>
dengan URL konfigurasi terkenal dari kebijakan Anda.
b. Perbarui elemen<audience>
dengan ID aplikasi dari aplikasi yang Anda buat sebelumnya di penyewa B2C Anda (misalnya, webapp1).
c. Perbarui elemen<issuer>
dengan titik akhir pengeluar token yang Anda rekam sebelumnya.<policies> <inbound> <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid."> <openid-config url="https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/B2C_1_signupsignin1/v2.0/.well-known/openid-configuration" /> <audiences> <audience>44444444-0000-0000-0000-444444444444</audience> </audiences> <issuers> <issuer>https://<tenant-name>.b2clogin.com/99999999-0000-0000-0000-999999999999/v2.0/</issuer> </issuers> </validate-jwt> <base /> </inbound> <backend> <base /> </backend> <outbound> <base /> </outbound> <on-error> <base /> </on-error> </policies>
Memvalidasi akses API aman
Untuk memastikan bahwa hanya penelepon terautentikasi yang dapat mengakses API Anda, Anda dapat memvalidasi konfigurasi Azure API Management dengan memanggil API dengan Postman.
Untuk memanggil API, Anda memerlukan token akses yang dikeluarkan oleh Azure AD B2C dan kunci langganan Azure API Management.
Mendapatkan token akses
Pertama, Anda memerlukan token yang dikeluarkan oleh Azure AD B2C terlebih dahulu untuk digunakan di header Authorization
di Postman. Anda bisa mendapatkannya dengan menggunakan fitur Jalankan sekarang dari alur pengguna daftar/masuk yang Anda buat sebagai salah satu prasyarat.
Di portal Microsoft Azure, buka penyewa Azure AD B2C Anda.
Di bawah Kebijakan, pilih Alur pengguna.
Pilih alur pengguna pendaftaran/masuk yang sudah ada (misalnya B2C_1_signupsignin1).
Untuk Aplikasi, pilih webapp1.
Untuk URL Balasan, pilih
https://jwt.ms
.Pilih Jalankan alur pengguna.
Selesaikan proses masuk. Anda harus diarahkan ke
https://jwt.ms
.Rekam nilai token yang dikodekan yang ditampilkan di browser Anda. Anda menggunakan nilai token ini untuk header Autorisasi di Postman.
Mendapatkan kunci langganan API
Aplikasi klien (dalam hal ini, Postman) yang memanggil API yang diterbitkan harus menyertakan kunci langganan API Manajemen yang valid dalam permintaan HTTP-nya ke API. Untuk mendapatkan kunci langganan yang disertakan dalam permintaan HTTP Postman Anda:
- Di portal Microsoft Azure, buka instans layanan Azure API Management Anda.
- Pilih Langganan.
- Pilih elipsis (...) di samping Produk: Tidak Terbatas, lalu pilih Tampilkan/sembunyikan kunci.
- Rekam Kunci Utama untuk produk. Anda menggunakan kunci ini untuk header
Ocp-Apim-Subscription-Key
dalam permintaan HTTP Anda di Postman.
Menguji panggilan API aman
Dengan token akses dan kunci langganan Azure API Management yang direkam, Anda sekarang siap untuk menguji apakah Anda telah mengonfigurasi akses aman ke API dengan benar.
Buat permintaan
GET
baru di Postman. Untuk URL permintaan, tentukan titik akhir daftar pembicara API yang Anda publikasikan sebagai salah satu prasyarat. Contohnya:https://contosoapim.azure-api.net/conference/speakers
Berikutnya, tambahkan header berikut ini:
Tombol Nilai Authorization
Nilai token yang dikodekan yang Anda rekam sebelumnya, dia awali dengan Bearer
(sertakan spasi setelah "Token Pembawa")Ocp-Apim-Subscription-Key
Kunci langganan Azure API Management yang Anda rekam sebelumnya. URL permintaan GET dan Header Anda akan terlihat serupa dengan yang ditunjukkan pada gambar berikut:
Di Postman, pilih tombol Kirim untuk menjalankan permintaan. Jika Anda telah mengonfigurasi semuanya dengan benar, Anda akan menerima respons JSON dengan kumpulan pembicara konferensi (ditampilkan di sini, terpotong):
{ "collection": { "version": "1.0", "href": "https://conferenceapi.azurewebsites.net:443/speakers", "links": [], "items": [ { "href": "https://conferenceapi.azurewebsites.net/speaker/1", "data": [ { "name": "Name", "value": "Scott Guthrie" } ], "links": [ { "rel": "http://tavis.net/rels/sessions", "href": "https://conferenceapi.azurewebsites.net/speaker/1/sessions" } ] }, [...]
Menguji panggilan API yang tidak aman
Sekarang setelah Anda membuat permintaan yang berhasil, uji kasus kegagalan untuk memastikan bahwa panggilan ke API Anda dengan token yang tidak valid ditolak seperti yang diharapkan. Salah satu cara untuk melakukan pengujian adalah dengan menambahkan atau mengubah beberapa karakter dalam nilai token, lalu menjalankan permintaan GET
yang sama seperti sebelumnya.
Tambahkan beberapa karakter ke nilai token untuk mensimulasikan token yang tidak valid. Misalnya, Anda dapat menambahkan "INVALID" ke nilai token, seperti yang ditunjukkan di sini:
Pilih tombol Kirim untuk menjalankan permintaan. Dengan token yang tidak valid, hasil yang diharapkan adalah kode status yang tidak sah
401
:{ "statusCode": 401, "message": "Unauthorized. Access token is missing or invalid." }
Jika Anda melihat kode status 401
, Anda telah memverifikasi bahwa hanya penelepon dengan token akses valid yang dikeluarkan oleh Azure AD B2C yang dapat membuat permintaan sukses ke API Azure API Management Anda.
Mendukung beberapa aplikasi dan pengeluar
Beberapa aplikasi biasanya berinteraksi dengan satu REST API. Agar API Anda dapat menerima token yang ditujukan untuk banyak aplikasi, tambahkan ID aplikasinya ke elemen <audiences>
dalam kebijakan masuk Azure API Management.
<!-- Accept tokens intended for these recipient applications -->
<audiences>
<audience>44444444-0000-0000-0000-444444444444</audience>
<audience>66666666-0000-0000-0000-666666666666</audience>
</audiences>
Demikian pula, untuk mendukung beberapa penerbit token, tambahkan URI titik akhir mereka ke elemen <issuers>
dalam kebijakan masuk Azure API Management.
<!-- Accept tokens from multiple issuers -->
<issuers>
<issuer>https://<tenant-name>.b2clogin.com/99999999-0000-0000-0000-999999999999/v2.0/</issuer>
<issuer>https://login.microsoftonline.com/99999999-0000-0000-0000-999999999999/v2.0/</issuer>
</issuers>
Migrasi ke b2clogin.com
Jika Anda memiliki API Azure API Management yang memvalidasi token yang dikeluarkan oleh titik akhir login.microsoftonline.com
warisan, Anda harus memigrasi API dan aplikasi yang memanggilnya untuk menggunakan token yang diterbitkan oleh b2clogin.com.
Anda dapat mengikuti proses umum ini untuk melakukan migrasi bertahap:
- Tambahkan dukungan dalam kebijakan masuk Azure API Management Anda untuk token yang dikeluarkan oleh b2clogin.com dan login.microsoftonline.com.
- Perbarui aplikasi Anda satu per satu untuk mendapatkan token dari titik akhir b2clogin.com.
- Setelah semua aplikasi Anda mendapatkan token dengan benar dari b2clogin.com, hapus dukungan untuk token yang diterbitkan login.microsoftonline.com dari API.
Contoh kebijakan masuk Azure API Management berikut menggambarkan cara menerima token yang dikeluarkan oleh b2clogin.com dan login.microsoftonline.com. Selain itu, kebijakan tersebut mendukung permintaan API dari dua aplikasi.
<policies>
<inbound>
<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
<openid-config url="https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/B2C_1_signupsignin1/v2.0/.well-known/openid-configuration" />
<audiences>
<audience>44444444-0000-0000-0000-444444444444</audience>
<audience>66666666-0000-0000-0000-666666666666</audience>
</audiences>
<issuers>
<issuer>https://login.microsoftonline.com/99999999-0000-0000-0000-999999999999/v2.0/</issuer>
<issuer>https://<tenant-name>.b2clogin.com/99999999-0000-0000-0000-999999999999/v2.0/</issuer>
</issuers>
</validate-jwt>
<base />
</inbound>
<backend> <base /> </backend>
<outbound> <base /> </outbound>
<on-error> <base /> </on-error>
</policies>
Langkah berikutnya
Untuk informasi tambahan tentang kebijakan Manajemen API Azure, lihat indeks referensi kebijakan Azure API Management.
Untuk informasi tentang migrasi API web berbasis OWIN dan aplikasinya ke b2clogin.com, lihat Memigrasikan API web berbasis OWIN ke b2clogin.com.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk