Bagikan melalui


Autentikasi Lokal di penyusun API Data

Saat mengembangkan solusi menggunakan penyusun Api Data secara lokal, atau saat menjalankan penyusun 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 Microsoft Entra ID, misalnya), Anda dapat menggunakan Simulator penyedia autentikasi atau StaticWebApps :

Simulator Menggunakan penyedia

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

  • Minimal, semua permintaan dievaluasi dalam konteks peran Authenticatedsistem .
  • Jika diinginkan, permintaan dievaluasi dalam konteks peran apa pun yang ditandai di X-MS-API-ROLE header Http.

Catatan

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 autentikasi konfigurasi runtime

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

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

2. Tentukan konteks peran permintaan

Dengan Simulator sebagai penyedia autentikasi penyusun 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 Anonymoussistem , 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' \

StaticWebApps Menggunakan penyedia

Penyedia StaticWebApps autentikasi menginstruksikan penyusun 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.

Catatan

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 yang menyediakan header yang dihasilkan X-MS-CLIENT-PRINCIPAL

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:

Properti Deskripsi
identityProvider Nilai string apa pun.
userId Pengidentifikasi unik untuk pengguna.
userDetails Nama pengguna atau alamat email pengguna.
userRoles Array peran yang ditetapkan pengguna.

Catatan

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 yang mengambil daftar rekaman entitas yang tersedia Book dalam konteks author peran:

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