Bagikan melalui


Mengamankan API Anda menggunakan konektor API di alur pengguna pendaftaran mandiri ID Eksternal Microsoft Entra

Berlaku untuk: Lingkaran hijau dengan simbol tanda centang putih. Penyewa Tenaga Kerja Penyewa Lingkaran putih dengan simbol X abu-abu. eksternal (pelajari lebih lanjut)

Saat mengintegrasikan REST API dalam alur pengguna pendaftaran layanan mandiri ID Eksternal Microsoft Entra, Anda harus melindungi titik akhir REST API Anda dengan autentikasi. Autentikasi REST API memastikan bahwa hanya layanan yang memiliki kredensial yang tepat, seperti ID Microsoft Entra, yang dapat melakukan panggilan ke titik akhir Anda. Artikel ini membahas cara mengamankan REST API.

Prasyarat

Selesaikan langkah-langkah di Panduan: Menambahkan konektor API ke alur pengguna pendaftaran.

Anda dapat melindungi titik akhir API dengan menggunakan autentikasi dasar HTTP atau autentikasi sertifikat klien HTTPS. Dalam kedua kasus, Anda memberikan kredensial yang digunakan ID Microsoft Entra saat memanggil titik akhir API Anda. Kemudian titik akhir API Anda akan memeriksa kredensial dan melakukan keputusan otorisasi.

Autentikasi dasar HTTP

Tip

Langkah-langkah dalam artikel ini mungkin sedikit berbeda berdasarkan portal tempat Anda memulai.

Autentikasi dasar HTTP didefinisikan dalam RFC 2617. Autentikasi dasar berfungsi sebagai berikut: MICROSOFT Entra ID mengirimkan permintaan HTTP dengan kredensial klien (username dan password) di Authorization header. Info masuk diformat sebagai string berkode base64 username:password. API Anda kemudian bertanggung jawab untuk memeriksa nilai-nilai ini untuk melakukan keputusan otorisasi lainnya.

Untuk mengonfigurasi Konektor API dengan autentikasi dasar HTTP, ikuti langkah-langkah berikut:

  1. Masuk ke pusat admin Microsoft Entra sebagai setidaknya Administrator Pengguna.
  2. Telusuri Ikhtisar Identitas>Eksternal Identitas.>
  3. Pilih Semua konektor API, lalu pilih Koneksi API yang ingin Anda konfigurasi.
  4. Untuk Jenis autentikasi, pilih Dasar.
  5. Berikan Nama pengguna, dan Kata sandi titik akhir REST API Anda. Cuplikan layar konfigurasi autentikasi dasar untuk konektor API.
  6. Pilih Simpan.

Autentikasi sertifikat klien HTTPS

Autentikasi sertifikat klien adalah autentikasi berbasis sertifikat bersama, di mana klien, ID Microsoft Entra, menyediakan sertifikat kliennya ke server untuk membuktikan identitasnya. Ini terjadi sebagai bagian dari jabat tangan SSL. API Anda bertanggung jawab untuk memvalidasi sertifikat milik klien yang valid, seperti ID Microsoft Entra, dan melakukan keputusan otorisasi. Sertifikat klien adalah sertifikat digital X.509.

Penting

Pada lingkungan produksi, sertifikat harus ditandatangani oleh otoritas sertifikat.

Membuat sertifikat

Untuk membuat sertifikat, Anda dapat menggunakan Azure Key Vault, yang memiliki opsi untuk sertifikat dan integrasi yang ditandatangani sendiri dengan penyedia penerbit sertifikat untuk sertifikat bertanda tangan. Pengaturan yang disarankan meliputi:

  • Subjek: CN=<yourapiname>.<tenantname>.onmicrosoft.com
  • Jenis Konten: PKCS #12
  • Jenis Tindakan Seumur Hidup: Email all contacts at a given percentage lifetime atau Email all contacts a given number of days before expiry
  • Jenis Kunci: RSA
  • Ukuran Kunci: 2048
  • Kunci privat yang dapat diekspor: Yes (agar dapat mengekspor file.pfx)

Kemudian Anda dapat mengekspor sertifikat.

Opsi 2: Siapkan sertifikat yang ditandatangani sendiri menggunakan PowerShell

Jika Anda belum memiliki sertifikat, Anda dapat menggunakan sertifikat yang ditandatangani sendiri. Sertifikat yang ditandatangani sendiri adalah sertifikat keamanan yang tidak ditandatangani oleh otoritas sertifikat (CA) dan tidak memberikan jaminan keamanan atas sertifikat yang ditandatangani oleh CA.

Di Windows, gunakan cmdlet New-SelfSignedCertificate di PowerShell untuk membuat sertifikat digital.

  1. Jalankan perintah PowerShell berikut ini untuk membuat sertifikat digital yang ditandatangani sendiri. Ubah argumen -Subject yang sesuai untuk aplikasi Anda dan nama penyewa Azure Active Directory B2C seperti contosowebapp.contoso.onmicrosoft.com. Anda juga dapat mengatur -NotAftertanggal untuk menetapkan waktu kedaluwarsa yang berbeda untuk sertifikat.

    New-SelfSignedCertificate `
        -KeyExportPolicy Exportable `
        -Subject "CN=yourappname.yourtenant.onmicrosoft.com" `
        -KeyAlgorithm RSA `
        -KeyLength 2048 `
        -KeyUsage DigitalSignature `
        -NotAfter (Get-Date).AddMonths(12) `
        -CertStoreLocation "Cert:\CurrentUser\My"
    
  2. Di komputer Windows, cari dan pilih Kelola sertifikat pengguna

  3. Di bawah Sertifikat - Pengguna Saat Ini, pilih Sertifikat>Pribadi>yourappname.yourtenant.onmicrosoft.com.

  4. Pilih sertifikat, lalu pilihTindakan>Semua Tugas>Ekspor.

  5. Pilih Berikutnya>Ya, ekspor kunci privat>Berikutnya.

  6. Terima default untuk Format File Ekspor, lalu pilih Berikutnya.

  7. Aktifkan opsi Kata Sandi, masukkan sandi untuk sertifikat, lalu pilih Berikutnya.

  8. Untuk menentukan lokasi penyimpanan sertifikat, pilih Jelajahi dan navigasikan ke direktori pilihan Anda.

  9. Pada jendela Simpan Sebagai, masukkan Nama file, lalu pilih Simpan.

  10. Pilih Berikutnya>Selesai.

Agar Azure Active Directory B2C menerima kata sandi file .pfx, kata sandi harus dienkripsi dengan opsi TripleDES-SHA1 di utilitas Ekspor Simpan Sertifikat Windows, bukan di AES256-SHA256.

Mengonfigurasi Konektor API

Untuk mengonfigurasi Konektor API dengan autentikasi sertifikat klien, ikuti langkah-langkah berikut:

  1. Masuk ke pusat admin Microsoft Entra sebagai setidaknya Administrator Pengguna.
  2. Telusuri Ikhtisar Identitas>Eksternal Identitas.>
  3. Pilih Semua konektor API, lalu pilih Koneksi API yang ingin Anda konfigurasi.
  4. Untuk Jenis autentikasi, pilih Sertifikat.
  5. Pada kotak Unggah sertifikat, pilih file .pfx sertifikat Anda dengan kunci privat.
  6. Pada kotak Masukkan Kata Sandi, ketikkan kata sandi sertifikat. Cuplikan layar konfigurasi autentikasi sertifikat untuk konektor API.
  7. Pilih Simpan.

Memberikan keputusan otorisasi

API Anda harus menerapkan otorisasi berdasarkan sertifikat klien yang dikirim untuk melindungi titik akhir API. Untuk Azure App Service dan Azure Functions, lihat mengonfigurasi autentikasi timbal balik TLS untuk mempelajari cara mengaktifkan dan memvalidasi sertifikat dari kode API Anda. Anda dapat menggunakan API Management Azure sebagai lapisan di depan layanan API apa pun untuk memeriksa properti sertifikat klien terhadap nilai yang diinginkan.

Memperbarui sertifikat

Disarankan agar Anda mengatur pemberitahuan pengingat saat sertifikat Anda kedaluwarsa. Anda harus membuat sertifikat baru dan mengulangi langkah-langkah di atas saat sertifikat yang digunakan akan kedaluwarsa. Untuk "menggulung" penggunaan sertifikat baru, layanan API Anda dapat terus menerima sertifikat lama dan baru selama jangka waktu sementara ketika sertifikat baru disebarkan.

Untuk mengunggah sertifikat baru ke konektor API yang sudah ada, pilih konektor API di bawah konektor API dan pilih Unggah sertifikat baru. Sertifikat yang terakhir diunggah yang tidak kedaluwarsa dan yang tanggal mulainya telah berlalu akan secara otomatis digunakan oleh ID Microsoft Entra.

Cuplikan layar sertifikat baru, saat sertifikat sudah ada.

Autentikasi kunci API

Beberapa layanan menggunakan mekanisme "kunci API" untuk mengaburkan akses ke titik akhir HTTP Anda selama pengembangan dengan mengharuskan pemanggil untuk menyertakan kunci unik sebagai header HTTP atau parameter kueri HTTP. Untuk Azure Functions, Anda dapat menyelesaikannya dengan menyertakan code sebagai parameter kueri di URL Titik akhir koneksi API Anda. (Misalnya, https://contoso.azurewebsites.net/api/endpoint?code=0123456789).

Ini bukan mekanisme yang harus digunakan sendiri dalam produksi. Oleh karena itu, konfigurasi untuk autentikasi dasar atau sertifikat selalu diperlukan. Jika Anda tidak ingin menerapkan metode autentikasi apa pun (tidak disarankan) untuk tujuan pengembangan, Anda dapat memilih autentikasi 'dasar' dalam konfigurasi konektor API dan menggunakan nilai sementara untuk username dan password API Anda dapat mengabaikan saat Anda menerapkan otorisasi yang tepat.

Langkah berikutnya