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.
Sekilas
Tujuan: Mensimulasikan CRUD API dengan Entra auth
Waktu: 20 menit
Plugins:CrudApiPlugin
Prasyarat:Menyiapkan Proksi Dev
Saat membangun aplikasi, Anda sering berinteraksi dengan API backend. Terkadang, API ini belum tersedia, atau tim lain memperbaruinya untuk memenuhi persyaratan terbaru. Untuk menghindari menunggu, Anda biasanya membuat API tiruan yang mengembalikan data yang Anda butuhkan. Meskipun pendekatan ini mengatasi hambatan, pendekatan ini mengharuskan Anda untuk menghabiskan waktu membangun API dan akhirnya menggantinya dengan yang asli. Ini menjadi lebih rumit, ketika Anda perlu mengamankan API Anda dengan Microsoft Entra. Untuk menghindari membuang waktu, Anda dapat menggunakan Dev Proxy untuk mensimulasikan CRUD API dan mempercepat pengembangan.
CrudApiPluginDengan menggunakan , Anda dapat mensimulasikan API CRUD (Buat, Baca, Perbarui, Hapus) dengan penyimpanan data dalam memori. Dengan menggunakan file konfigurasi sederhana, Anda dapat menentukan URL mana yang didukung API tiruan Anda dan data apa yang dikembalikannya. Plugin ini juga mendukung CORS untuk penggunaan lintas domain dari aplikasi sisi klien. Plugin ini juga mendukung autentikasi Microsoft Entra, sehingga Anda dapat mengamankan API tiruan dengan Microsoft Entra dan menerapkan alur autentikasi yang sama untuk aplikasi Anda seperti di lingkungan produksi Anda.
Skenario
Katakanlah, Anda membuat aplikasi yang memungkinkan pengguna mengelola pelanggan. Untuk mendapatkan data, Anda perlu memanggil /customers titik akhir API backend. API diamankan dengan Microsoft Entra. Untuk menghindari menunggu tim backend menyelesaikan pekerjaan mereka, Anda memutuskan untuk menggunakan Dev Proxy untuk mensimulasikan API dan mengembalikan data yang Anda butuhkan.
Sebelum Anda mulai
Anda mulai dengan membuat API CRUD yang disimulasikan dengan data pelanggan. Setelah mengonfirmasi bahwa API berfungsi, Anda dapat mengamankannya dengan Microsoft Entra.
Contoh 1: Mensimulasikan CRUD API yang diamankan dengan Microsoft Entra menggunakan satu cakupan
Dalam contoh pertama, Anda mengamankan seluruh API dengan satu cakupan. Tidak peduli apakah pengguna perlu mendapatkan informasi tentang pelanggan atau memperbaruinya, mereka menggunakan izin yang sama.
Dalam file customers-api.json, tambahkan informasi tentang Entra.
File:customers-api.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/crudapiplugin.apifile.schema.json",
"baseUrl": "https://api.contoso.com/v1/customers",
"dataFile": "customers-data.json",
"auth": "entra",
"entraAuthConfig": {
"audience": "https://api.contoso.com",
"issuer": "https://login.microsoftonline.com/contoso.com",
"scopes": ["api://contoso.com/user_impersonation"]
},
"actions": [
{
"action": "getAll"
},
{
"action": "getOne",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "create"
},
{
"action": "merge",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "delete",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
}
]
}
Dengan menetapkan properti auth ke entra, Anda menentukan bahwa API diamankan dengan Microsoft Entra.
entraAuthConfig Di properti , Anda menentukan detail konfigurasi. Properti audience menentukan audiens API, issuer properti menentukan penerbit token, dan scopes properti menentukan cakupan yang diperlukan untuk mengakses API. Karena Anda menentukan scopes di tingkat akar file API, semua tindakan memerlukan cakupan yang sama.
Jika Anda mencoba memanggil API tanpa token dengan audiens, penerbit, dan cakupan yang telah ditentukan, Anda akan mendapatkan respons 401 Unauthorized.
Catatan
Pada tahap ini, Dev Proxy tidak memvalidasi token. Ini hanya memeriksa apakah token ada dan memiliki audiens, penerbit, dan cakupan yang diperlukan. Ini nyaman selama pengembangan awal, ketika Anda belum memiliki pendaftaran aplikasi Microsoft Entra nyata dan tidak bisa mendapatkan token nyata.
Contoh 2: Mensimulasikan CRUD API yang diamankan dengan Microsoft Entra menggunakan cakupan yang berbeda untuk tindakan yang berbeda
Dalam banyak kasus, operasi API yang berbeda memerlukan izin yang berbeda. Misalnya, mendapatkan informasi tentang pelanggan mungkin memerlukan izin yang berbeda dari memperbaruinya. Dalam contoh ini, Anda mengamankan tindakan API yang berbeda dengan cakupan yang berbeda.
customers-api.json Perbarui file sebagai berikut:
File:customers-api.json (dengan cakupan tingkat tindakan)
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/crudapiplugin.apifile.schema.json",
"baseUrl": "https://api.contoso.com/v1/customers",
"dataFile": "customers-data.json",
"auth": "entra",
"entraAuthConfig": {
"audience": "https://api.contoso.com",
"issuer": "https://login.microsoftonline.com/contoso.com"
},
"actions": [
{
"action": "getAll",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.read"]
}
},
{
"action": "getOne",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.read"]
}
},
{
"action": "create",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.write"]
}
},
{
"action": "merge",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.write"]
}
},
{
"action": "delete",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.write"]
}
}
]
}
Kali ini, Anda tidak menentukan scopes di tingkat akar file API. Sebagai gantinya, Anda menentukannya untuk setiap tindakan. Dengan cara ini, Anda dapat mengamankan berbagai tindakan dengan cakupan yang berbeda. Misalnya, mendapatkan informasi tentang pelanggan memerlukan api://contoso.com/customer.read cakupan, sementara memperbarui pelanggan memerlukan api://contoso.com/customer.write cakupan.
Validasi token
Dev Proxy memungkinkan Anda mensimulasikan CRUD API yang diamankan dengan Microsoft Entra, dan memeriksa apakah Anda menggunakan token yang valid. Memvalidasi token nyaman ketika Anda memiliki pendaftaran aplikasi di Microsoft Entra, tetapi tim masih membangun API. Ini memungkinkan Anda untuk menguji aplikasi Anda dengan lebih akurat.
Jika Anda ingin Dev Proxy memvalidasi token akses, ke entraAuthConfig properti tambahkan validateSigningKey properti dan atur ke true:
File:customers-api.json (dengan validasi token)
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/crudapiplugin.apifile.schema.json",
"baseUrl": "https://api.contoso.com/v1/customers",
"dataFile": "customers-data.json",
"auth": "entra",
"entraAuthConfig": {
"audience": "https://api.contoso.com",
"issuer": "https://login.microsoftonline.com/contoso.com",
"scopes": ["api://contoso.com/user_impersonation"],
"validateSigningKey": true
},
"actions": [
{
"action": "getAll"
},
{
"action": "getOne",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "create"
},
{
"action": "merge",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "delete",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
}
]
}
Jika Anda mencoba memanggil API dengan token yang dibuat sendiri, Anda mendapatkan 401 Unauthorized respons. Dev Proxy hanya memungkinkan permintaan dengan token valid yang dikeluarkan oleh Microsoft Entra.
Langkah selanjutnya
Pelajari selengkapnya tentang CrudApiPlugin.
Sampel
Lihat juga sampel Proksi Dev terkait: