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.
Penyedia autentikasi Simulator memungkinkan Anda menguji izin berbasis peran secara lokal tanpa mengonfigurasi penyedia identitas. Gunakan selama pengembangan untuk memverifikasi bahwa aturan izin Anda berfungsi dengan benar sebelum menyebarkan ke produksi.
Pilih penyedia autentikasi lokal
Selama pengembangan, Anda dapat menguji autentikasi dan otorisasi tanpa mengonfigurasi penyedia identitas produksi.
| Provider | Paling cocok untuk | Catatan |
|---|---|---|
| Simulator | Pengujian izin cepat | Hanya untuk pengembangan. Memperlakukan setiap permintaan sebagai terautentikasi. Beralih ke peran Authenticated; gantikan dengan X-MS-API-ROLE. |
| AppService | Pengujian berbasis klaim | Simulasikan EasyAuth secara lokal dengan mengirim X-MS-CLIENT-PRINCIPAL dengan klaim kustom. Untuk detailnya, lihat Mengonfigurasi autentikasi App Service. |
Proses autentikasi
Penyedia Simulator memperlakukan semua permintaan sebagai terautentikasi, memungkinkan Anda fokus pada pengujian aturan otorisasi:
| Phase | Apa yang terjadi |
|---|---|
| Permintaan tiba | Pengembang mengirim permintaan HTTP ke DAB |
| Penetapan peran | DAB menetapkan Authenticated (default) atau peran yang tercantum di X-MS-API-ROLE header |
| Pemeriksaan izin | DAB mengevaluasi permintaan berdasarkan izin entitas untuk peran yang dimaksud |
| Pelaksanaan kueri | Jika diizinkan, DAB mengkueri database dan mengembalikan hasil |
Penting
Penyedia Simulator hanya untuk pengembangan. Jangan pernah menggunakannya dalam lingkungan produksi—mengabaikan semua autentikasi nyata.
Prasyarat
- CLI penyusun API Data terinstal (panduan penginstalan)
- Yang ada
dab-config.jsondengan setidaknya satu entitas
Referensi cepat
| Setting | Nilai |
|---|---|
| Provider | Simulator |
| Host mode |
development (diperlukan) |
| Peran bawaan |
Authenticated (disuntikkan secara otomatis) |
| Header penggantian peran | X-MS-API-ROLE |
| Token diperlukan | Tidak. |
| Bantuan Pengajuan Klaim | Terbatas (hanya peran Anonymous/Authenticated sistem; tidak ada klaim sewenang-wenang) |
Langkah 1: Mengonfigurasi penyedia Simulator
Atur penyedia autentikasi ke Simulator dan pastikan mode pengembangan diaktifkan.
antarmuka baris perintah (CLI)
# Enable development mode
dab configure \
--runtime.host.mode development
# Set the Simulator provider
dab configure \
--runtime.host.authentication.provider Simulator
Konfigurasi yang dihasilkan
{
"runtime": {
"host": {
"mode": "development",
"authentication": {
"provider": "Simulator"
}
}
}
}
Nota
Penyedia Simulator hanya berfungsi ketika mode diatur ke development. Dalam mode produksi, DAB menolak penyedia Simulator dan gagal memulai.
Langkah 2: Mengonfigurasi izin entitas
Tentukan izin untuk peran yang ingin Anda uji. Anda dapat menguji peran sistem (Anonymous, Authenticated) dan peran kustom.
Contoh: Beberapa peran
# Allow anonymous read access
dab update Book \
--permissions "Anonymous:read"
# Allow authenticated users full read access
dab update Book \
--permissions "Authenticated:read"
# Allow authors to create and update
dab update Book \
--permissions "author:create,read,update"
# Allow admins full access
dab update Book \
--permissions "admin:*"
Konfigurasi yang dihasilkan
{
"entities": {
"Book": {
"source": "dbo.Books",
"permissions": [
{
"role": "Anonymous",
"actions": ["read"]
},
{
"role": "Authenticated",
"actions": ["read"]
},
{
"role": "author",
"actions": ["create", "read", "update"]
},
{
"role": "admin",
"actions": ["*"]
}
]
}
}
}
Langkah 3: Uji peran yang berbeda
Mulai penyusun API Data dan kirim permintaan untuk menguji setiap peran.
dab start
Uji sebagai terautentikasi (default)
Tanpa adanya header khusus, permintaan akan dievaluasi sebagai Authenticated peran:
curl -X GET "http://localhost:5000/api/Book"
Uji sebagai anonim
X-MS-API-ROLE Gunakan header untuk menguji sebagai Anonymous:
curl -X GET "http://localhost:5000/api/Book" \
-H "X-MS-API-ROLE: Anonymous"
Menguji sebagai peran kustom
X-MS-API-ROLE Gunakan header untuk menguji peran kustom apa pun:
curl -X GET "http://localhost:5000/api/Book" \
-H "X-MS-API-ROLE: author"
Nota
Dengan Simulator, pengujian peran kustom berfungsi karena DAB mengevaluasi izin berdasarkan nilai dari header X-MS-API-ROLE. Peran sistem (Anonymous, Authenticated) selalu tersedia. Jika permintaan peran kustom mengembalikan 403, verifikasi nama peran yang sama persis dengan izin entitas Anda.
Menguji tindakan yang harus ditolak
Coba lakukan tindakan yang tidak diizinkan untuk peran tersebut.
# This should fail—Anonymous can only read
curl -X POST "http://localhost:5000/api/Book" \
-H "X-MS-API-ROLE: Anonymous" \
-H "Content-Type: application/json" \
-d '{"title": "New Book", "author": "Test"}'
Respons yang diharapkan: 403 Forbidden
Skenario pengujian
Gunakan Simulator untuk menguji skenario umum ini:
| Scenario | Cara menguji |
|---|---|
| Akses Anonim | Atur X-MS-API-ROLE: Anonymous |
| Akses terautentikasi | Hilangkan header (default) atau atur X-MS-API-ROLE: Authenticated |
| Akses peran kustom | Atur X-MS-API-ROLE: <role-name> |
| Tindakan ditolak | Meminta tindakan yang perannya tidak memiliki izin untuk lakukan |
| Pembatasan bidang | Mengonfigurasi izin tingkat bidang dan memverifikasi bidang respons |
| Peran yang hilang | Atur X-MS-API-ROLE: nonexistent untuk menguji penanganan kesalahan |
Keterbatasan
Penyedia Simulator memiliki batasan ini:
| Batasan | Penanganan masalah |
|---|---|
| Tidak ada klaim kustom | Menggunakan penyedia AppService dengan X-MS-CLIENT-PRINCIPAL header |
| Tidak ada kebijakan database dengan klaim | Menguji kebijakan menggunakan penyedia AppService |
| Tidak ada validasi token | Beralih ke Entra atau Penyedia kustom untuk produksi |
| Mode pengembangan saja | Menggunakan penyedia nyata dalam produksi |
Petunjuk / Saran
Jika Anda perlu menguji kebijakan database yang menggunakan klaim (seperti @claims.userId), gunakan penyedia AppService sebagai gantinya. Ini memungkinkan Anda memberikan klaim kustom melalui X-MS-CLIENT-PRINCIPAL header.
Transisi ke produksi
Saat Anda siap untuk menyebarkan, ganti penyedia Simulator dengan penyedia produksi:
- Ubah
modedaridevelopmentkeproduction - Ubah
providerdariSimulatorke penyedia pilihan Anda (EntraID/AzureAD,AppService, atauCustom) - Mengonfigurasi pengaturan JWT yang diperlukan (audiens, penerbit)
{
"runtime": {
"host": {
"mode": "production",
"authentication": {
"provider": "EntraID",
"jwt": {
"audience": "api://<your-app-id>",
"issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
}
}
}
}
}
Contoh konfigurasi lengkap
{
"$schema": "https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json",
"data-source": {
"database-type": "mssql",
"connection-string": "Server=localhost;Database=Library;Trusted_Connection=true;TrustServerCertificate=true;"
},
"runtime": {
"host": {
"mode": "development",
"authentication": {
"provider": "Simulator"
}
}
},
"entities": {
"Book": {
"source": "dbo.Books",
"permissions": [
{
"role": "Anonymous",
"actions": ["read"]
},
{
"role": "Authenticated",
"actions": ["read"]
},
{
"role": "author",
"actions": ["create", "read", "update"]
},
{
"role": "admin",
"actions": ["*"]
}
]
}
}
}