Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När du skapar appar interagerar du ofta med serverdels-API:er. Ibland är dessa API:er ännu inte tillgängliga, eller så uppdaterar andra team dem för att uppfylla de senaste kraven. För att undvika att vänta skapar du vanligtvis ett falskt API som returnerar de data du behöver. Även om denna metod avblockerar dig, kräver den att du ägnar tid åt att bygga ett API som du slutligen ersätter med det verkliga. Det blir ännu mer komplicerat när du behöver skydda ditt API med Microsoft Entra. För att undvika slöseri med tid kan du använda Dev Proxy för att simulera ett CRUD-API och påskynda utvecklingen.
Med hjälp av CrudApiPluginkan du simulera ett CRUD-API (Skapa, Läsa, Uppdatera, Ta bort) med ett minnesinternt datalager. Med hjälp av en enkel konfigurationsfil kan du definiera vilka URL:er som ditt falska API stöder och vilka data som returneras. Plugin-programmet stöder även CORS för användning mellan domäner från program på klientsidan. Plugin-programmet stöder även Microsoft Entra-autentisering, så att du kan skydda ditt falska API med Microsoft Entra och implementera samma autentiseringsflöde för din app som i din produktionsmiljö.
Scenario
Anta att du skapar en app som gör det möjligt för användare att hantera kunder. För att hämta data måste du anropa /customers slutpunkten för serverdels-API:et. API:et skyddas med Microsoft Entra. För att undvika att vänta på att serverdelsteamet ska slutföra sitt arbete bestämmer du dig för att använda Dev Proxy för att simulera API:et och returnera de data du behöver.
Innan du börjar
Du börjar med att skapa ett simulerat CRUD-API med kunddata. När du har bekräftat att API:et fungerar kan du skydda det med Microsoft Entra.
Exempel 1: Simulera ett CRUD-API som skyddas med Microsoft Entra med ett enda omfång
I det första exemplet skyddar du hela API:et med ett enda omfång. Oavsett om användarna behöver få information om kunder eller uppdatera dem använder de samma behörighet.
customers-api.json Lägg till information om Entra i filen.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.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})]"
}
]
}
Genom att du anger egenskapen auth som entra skyddas API:et med Microsoft Entra. I egenskapen entraAuthConfig anger du konfigurationsinformationen. Egenskapen audience anger målgruppen för API:et, egenskapen issuer anger utfärdaren av tokens, och egenskapen scopes anger de omfång som krävs för att komma åt API:et. Eftersom du definierar scopes på rotnivån för API-filen kräver alla åtgärder samma omfång.
Om du försöker anropa API:et utan en token med den angivna målgruppen, utfärdaren och omfången får du ett 401 Unauthorized svar.
Kommentar
I det här skedet validerar Dev Proxy inte token. Den kontrollerar bara om token finns och har den målgrupp, utfärdare och omfång som krävs. Detta är praktiskt under tidig utveckling, när du inte har en riktig Microsoft Entra-appregistrering ännu och inte kan få en riktig token.
Exempel 2: Simulera ett CRUD-API som skyddas med Microsoft Entra med olika omfång för olika åtgärder
I många fall kräver olika API-åtgärder olika behörigheter. Till exempel kan information om kunder kräva en annan behörighet än att uppdatera dem. I det här exemplet skyddar du olika API-åtgärder med olika omfång.
Uppdatera filen på customers-api.json följande sätt:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.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"]
}
}
]
}
Den här gången anger du inte scopes på rot-nivån av API-filen. I stället anger du dem för varje åtgärd. På så sätt kan du skydda olika åtgärder med olika omfång. Om du till exempel vill få information om kunder krävs omfånget api://contoso.com/customer.read , medan uppdatering av kunder kräver omfånget api://contoso.com/customer.write .
Verifiera token
Med Dev Proxy kan du simulera ett CRUD-API som skyddas med Microsoft Entra och kontrollera att du använder en giltig token. Det är praktiskt att verifiera token när du har en appregistrering i Microsoft Entra, men teamet skapar fortfarande API:et. Det gör att du kan testa din app på ett mer korrekt sätt.
Om du vill att Dev Proxy ska verifiera åtkomsttoken lägger du till egenskapen validateSigningKey till egenskapen entraAuthConfig och ställer in den på true:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.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})]"
}
]
}
Om du försöker anropa API:et med en egengjord token får du ett 401 Unauthorized svar. Dev Proxy tillåter endast begäranden med en giltig token som utfärdats av Microsoft Entra.
Gå vidare
Läs mer om CrudApiPlugin.
Exempel
Se även relaterade Dev Proxy-exempel: