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
Authenticated
sistem . - 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 Authenticated
sistem :
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' \
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'