Lezen in het Engels

Delen via


Een CRUD-API simuleren die is beveiligd met Microsoft Entra

Bij het bouwen van apps werkt u vaak met back-end-API's. Soms zijn deze API's nog niet beschikbaar, of andere teams werken ze bij om te voldoen aan de nieuwste vereisten. Om te voorkomen dat u wacht, maakt u doorgaans een mock-API die de gegevens retourneert die u nodig hebt. Hoewel deze methode u deblokkert, moet u tijd besteden aan het bouwen van een API die u uiteindelijk vervangt door de echte. Het wordt nog ingewikkelder wanneer u uw API moet beveiligen met Microsoft Entra. Om te voorkomen dat u tijd verspilt, kunt u Dev Proxy gebruiken om een CRUD-API te simuleren en de ontwikkeling te versnellen.

Met behulp van de CrudApiPluginAPI kunt u een CRUD-API (Maken, Lezen, Bijwerken, Verwijderen) simuleren met een gegevensarchief in het geheugen. Met behulp van een eenvoudig configuratiebestand kunt u definiëren welke URL's uw mock-API ondersteunt en welke gegevens worden geretourneerd. De invoegtoepassing biedt ook ondersteuning voor CORS voor gebruik tussen domeinen vanuit toepassingen aan de clientzijde. De invoegtoepassing biedt ook ondersteuning voor Microsoft Entra-verificatie, zodat u uw mock-API kunt beveiligen met Microsoft Entra en dezelfde verificatiestroom voor uw app kunt implementeren als in uw productieomgeving.

Scenario

Stel dat u een app bouwt waarmee gebruikers klanten kunnen beheren. Als u de gegevens wilt ophalen, moet u het /customers eindpunt van de back-end-API aanroepen. De API is beveiligd met Microsoft Entra. Om te voorkomen dat het back-endteam wacht totdat het werk is voltooid, besluit u Dev Proxy te gebruiken om de API te simuleren en de benodigde gegevens te retourneren.

Voordat u begint

U begint met het maken van een gesimuleerde CRUD-API met klantgegevens. Nadat u hebt bevestigd dat de API werkt, kunt u deze beveiligen met Microsoft Entra.

Voorbeeld 1: Een CRUD-API simuleren die is beveiligd met Microsoft Entra met één bereik

In het eerste voorbeeld beveiligt u de hele API met één bereik. Ongeacht of gebruikers informatie over klanten moeten krijgen of ze moeten bijwerken, gebruiken ze dezelfde machtiging.

Voeg in het customers-api.json bestand informatie over Entra toe.

JSON
{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.0/crudapiplugin.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})]"
    }
  ]
}

Door de auth eigenschap in te stellen die entra u opgeeft, wordt de API beveiligd met Microsoft Entra. In de entraAuthConfig eigenschap geeft u de configuratiegegevens op. De audience eigenschap specificeert de doelgroep van de API, de issuer eigenschap geeft de verlener van de tokens op en de scopes eigenschap specificeert de bereiken die vereist zijn voor toegang tot de API. Omdat u definieert scopes op het hoofdniveau van het API-bestand, hebben alle acties hetzelfde bereik nodig.

Als u de API probeert aan te roepen zonder een token met de opgegeven doelgroep, verlener en bereiken, krijgt u een 401 Unauthorized antwoord.

Notitie

In deze fase valideert Dev Proxy het token niet. Er wordt alleen gecontroleerd of het token aanwezig is en de vereiste doelgroep, verlener en bereiken heeft. Dit is handig tijdens de vroege ontwikkeling, wanneer u nog geen echte Registratie van Microsoft Entra-apps hebt en geen echt token kunt krijgen.

Voorbeeld 2: Een CRUD-API simuleren die is beveiligd met Microsoft Entra met behulp van verschillende bereiken voor verschillende acties

In veel gevallen zijn voor verschillende API-bewerkingen verschillende machtigingen vereist. Voor het ophalen van informatie over klanten is bijvoorbeeld mogelijk een andere machtiging vereist dan het bijwerken ervan. In dit voorbeeld beveiligt u verschillende API-acties met verschillende bereiken.

Werk het customers-api.json bestand als volgt bij:

JSON
{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.0/crudapiplugin.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"]
      }
    }
  ]
}

Deze keer geeft scopes u het hoofdniveau van het API-bestand niet op. In plaats daarvan geeft u deze op voor elke actie. Op deze manier kunt u verschillende acties beveiligen met verschillende bereiken. Het ophalen van informatie over klanten vereist bijvoorbeeld het api://contoso.com/customer.read bereik, terwijl het bijwerken van klanten het api://contoso.com/customer.write bereik vereist.

Tokens valideren

Met dev Proxy kunt u een CRUD-API simuleren die is beveiligd met Microsoft Entra en controleren of u een geldig token gebruikt. Het valideren van het token is handig wanneer u een app-registratie in Microsoft Entra hebt, maar het team bouwt nog steeds de API. Hiermee kunt u uw app nauwkeuriger testen.

Als u wilt dat Dev Proxy het toegangstoken valideert, voegt u de eigenschap toe aan de entraAuthConfig eigenschap en stelt u truedeze validateSigningKey in op:

JSON
{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.0/crudapiplugin.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})]"
    }
  ]
}

Als u de API probeert aan te roepen met een zelf ontworpen token, krijgt u een 401 Unauthorized antwoord. Dev Proxy staat alleen aanvragen toe met een geldig token dat is uitgegeven door Microsoft Entra.

Volgende stap

Meer informatie over de CrudApiPlugin.

Voorbeelden

Zie ook de gerelateerde Dev Proxy-voorbeelden: