Bagikan melalui


Autentikasi Lokal di penyusun API Data

Saat mengembangkan solusi menggunakan penyusun API Data secara lokal, atau saat menjalankan pembuat API Data lokal, Anda perlu menguji opsi autentikasi dan otorisasi yang dikonfigurasi dengan mensimulasikan permintaan dengan peran atau klaim tertentu.

Untuk mensimulasikan permintaan terautentikasi tanpa mengonfigurasi penyedia autentikasi (seperti ID Microsoft Entra, misalnya), Anda dapat menggunakan Simulator penyedia atau StaticWebApps autentikasi:

Gunakan Simulator penyedia

Simulator adalah penyedia autentikasi yang dapat dikonfigurasi yang menginstruksikan mesin pembuat API Data untuk memperlakukan semua permintaan sebagai terautentikasi.

  • Minimal, semua permintaan dievaluasi dalam konteks peran Authenticatedsistem .
  • Jika diinginkan, permintaan dievaluasi dalam konteks setiap peran yang dinyatakan di X-MS-API-ROLE header HTTP.

Nota

Meskipun peran yang diinginkan akan dihormati, izin otorisasi yang menentukan kebijakan database tidak akan berfungsi karena klaim kustom tidak dapat diatur untuk pengguna yang diautentikasi dengan Simulator penyedia. Lanjutkan ke bagian Gunakan StaticWebApps penyedia untuk menguji kebijakan otorisasi database.

1. Perbarui penyedia otentikasi pada konfigurasi runtime

Pastikan bahwa dalam file konfigurasi, Anda menggunakan Simulator sebagai penyedia autentikasi dan mode development dispesifikasikan. Lihat bagian konfigurasi sampel host ini:

"host": {
  "mode": "development",
  "authentication": {
    "provider": "Simulator"
  }
}

2. Tentukan konteks peran permintaan

Dengan Simulator sebagai penyedia autentikasi pembuat API Data, tidak ada header kustom yang diperlukan untuk mengatur konteks peran ke peran Authenticatedsistem :

curl --request GET \
  --url http://localhost:5000/api/books \

Untuk mengatur konteks peran ke peran lain, termasuk peran Anonymous sistem, X-MS-API-ROLE header harus disertakan dengan peran yang diinginkan:

curl --request GET \
  --url http://localhost:5000/api/books \
  --header 'X-MS-API-ROLE: author' \

Gunakan penyedia StaticWebApps

Penyedia StaticWebApps autentikasi menginstruksikan pembuat API Data untuk mencari sekumpulan header HTTP yang hanya ada saat berjalan dalam lingkungan Static Web Apps. Klien mengatur header HTTP ini saat berjalan secara lokal untuk mensimulasikan pengguna yang diautentikasi, termasuk keanggotaan peran atau klaim kustom apa pun.

Nota

Instans header Http yang disediakan klien, X-MS-CLIENT-PRINCIPAL, hanya akan berfungsi saat mengembangkan secara lokal karena lingkungan Azure Static Web Apps produksi menghilangkan semua instans yang disediakan klien dari header tersebut.

Pastikan bahwa dalam file konfigurasi Anda menggunakan StaticWebApps penyedia autentikasi. Lihat bagian konfigurasi sampel host ini:

"host": {
  "mode": "development",
  "authentication": {
    "provider": "StaticWebApps"
  }
}

1. Kirim permintaan dengan header X-MS-CLIENT-PRINCIPAL yang dihasilkan

Setelah penyusun API Data berjalan secara lokal dan dikonfigurasi untuk menggunakan StaticWebApps penyedia autentikasi, Anda dapat membuat objek utama klien secara manual menggunakan templat berikut:

{  
  "identityProvider": "test",
  "userId": "12345",
  "userDetails": "john@contoso.com",
  "userRoles": ["author", "editor"]
}

Metadata pengguna terautentikasi Static Web App memiliki properti berikut:

Harta benda Deskripsi
identitasPenyedia Nilai string apa pun.
userId Pengidentifikasi unik untuk pengguna.
Rincian pengguna Nama pengguna atau alamat email pengguna.
userRoles Kumpulan peran yang ditetapkan untuk pengguna.

Nota

Seperti yang disebutkan dalam dokumentasi Static Web Apps, X-MS-CLIENT-PRINCIPAL header tidak berisi claims array.

Agar dapat diteruskan dengan X-MS-CLIENT-PRINCIPAL header, payload JSON harus dikodekan Base64. Anda dapat menggunakan alat online atau offline apa pun untuk melakukannya. Salah satu alat tersebut adalah DevToys. Contoh payload yang dikodekan Base64 yang mewakili JSON yang sebelumnya direferensikan:

eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9

Permintaan cURL berikut mensimulasikan pengguna terautentikasi mengambil daftar rekaman entitas yang tersedia Book dalam konteks peran author.

curl --request GET \
  --url http://localhost:5000/api/books \
  --header 'X-MS-API-ROLE: author' \
  --header 'X-MS-CLIENT-PRINCIPAL: eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9'