Bagikan melalui


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:

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.

  1. Masuk ke portal Azure.
  2. 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.
  3. Di panel kiri, pilih Azure AD B2C. Atau, Anda dapat memilih Semua layanan, lalu cari dan pilih Azure AD B2C.
  4. Pilih Pendaftaran aplikasi, dan pilih tab Aplikasi yang dimiliki.
  5. 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.

  1. Di portal Microsoft Azure, buka penyewa Azure AD B2C Anda.

  2. Di bawah Kebijakan, pilih Alur pengguna.

  3. Pilih kebijakan yang ada (misalnya, B2C_1_signupsignin1), lalu pilih Jalankan alur pengguna.

  4. 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.

    Screenshot of the well-known URI hyperlink on the

  5. Pilih hyperlink untuk membuka halaman konfigurasi yang sudah diketahui dari OpenID Connect.

  6. 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.

  1. Di portal Microsoft Azure, buka instans Azure API Management Anda.

  2. Pilih API.

  3. Pilih API yang ingin Anda amankan dengan Azure AD B2C.

  4. Pilih tab Desain.

  5. Di bagian Pemrosesan masuk, pilih </> untuk membuka editor kode kebijakan.

  6. 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.

  1. Di portal Microsoft Azure, buka penyewa Azure AD B2C Anda.

  2. Di bawah Kebijakan, pilih Alur pengguna.

  3. Pilih alur pengguna pendaftaran/masuk yang sudah ada (misalnya B2C_1_signupsignin1).

  4. Untuk Aplikasi, pilih webapp1.

  5. Untuk URL Balasan, pilih https://jwt.ms.

  6. Pilih Jalankan alur pengguna.

    Screenshot of the

  7. Selesaikan proses masuk. Anda harus diarahkan ke https://jwt.ms.

  8. Rekam nilai token yang dikodekan yang ditampilkan di browser Anda. Anda menggunakan nilai token ini untuk header Autorisasi di Postman.

    Screenshot of the encoded token value displayed on jwt.ms.

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:

  1. Di portal Microsoft Azure, buka instans layanan Azure API Management Anda.
  2. Pilih Langganan.
  3. Pilih elipsis (...) di samping Produk: Tidak Terbatas, lalu pilih Tampilkan/sembunyikan kunci.
  4. Rekam Kunci Utama untuk produk. Anda menggunakan kunci ini untuk header Ocp-Apim-Subscription-Key dalam permintaan HTTP Anda di Postman.

Screenshot of the

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.

  1. 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

  2. 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:

    Screenshot of the Postman UI showing the GET request URL and headers.

  3. 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.

  1. 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:

    Screenshot of the Headers section of Postman UI showing the string INVALID added to token.

  2. 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:

  1. Tambahkan dukungan dalam kebijakan masuk Azure API Management Anda untuk token yang dikeluarkan oleh b2clogin.com dan login.microsoftonline.com.
  2. Perbarui aplikasi Anda satu per satu untuk mendapatkan token dari titik akhir b2clogin.com.
  3. 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.