Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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-ROLEheader 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'