Sdílet prostřednictvím


Konfigurace ověřování simulátoru pro místní testování

Zprostředkovatel ověřování simulátoru umožňuje místně testovat oprávnění založená na rolích bez konfigurace zprostředkovatele identity. Použijte ho při vývoji a před nasazením do produkčního prostředí ověřte, že vaše pravidla oprávnění fungují správně.

Volba místního zprostředkovatele ověřování

Během vývoje můžete otestovat ověřování a autorizaci bez konfigurace zprostředkovatele produkční identity.

Provider Nejvhodnější pro Poznámky
Simulátor Rychlé testování oprávnění Pouze pro vývoj. Zpracovává všechny požadavky jako ověřené. Výchozí hodnota pro roli Authenticated; lze přepsat pomocí X-MS-API-ROLE.
AppService Testování řízené deklaracemi Simulujte EasyAuth lokálně odesláním X-MS-CLIENT-PRINCIPAL s vlastními tvrzeními. Podrobnosti najdete v tématu Konfigurace ověřování služby App Service.

Průběh ověřování

Poskytovatel simulátoru zpracovává všechny požadavky jako ověřené a umožňuje zaměřit se na testovací autorizační pravidla:

Obrázek toku ověřování simulátoru znázorňující, jak se požadavky automaticky považují za ověřené

Phase Co se stane
Žádost dorazí. Vývojář odešle požadavek HTTP do DAB.
Přiřazení role DAB přiřadí Authenticated (výchozí) nebo roli ze záhlaví.X-MS-API-ROLE
Kontrola oprávnění DAB vyhodnocuje žádost s ohledem na oprávnění entity v rámci dané role.
Provádění dotazů Pokud je tato možnost povolená, DAB dotazuje databázi a vrátí výsledky.

Důležité

Poskytovatel simulátoru je určen pouze pro vývoj. Nikdy ho nepoužívejte v produkčním prostředí – obchází veškeré skutečné ověřování.

Požadavky

  • Nainstalovaný Data API builder CLI (průvodce instalací)
  • Existující dab-config.json s alespoň jednou entitou

Stručná referenční dokumentace

Setting Hodnota
Provider Simulator
Režim hostitele development (povinné)
Výchozí role Authenticated (vloženo automaticky)
Hlavička předefinování role X-MS-API-ROLE
Požadovaný token Ne
Podpora nároků Omezené (pouze systémové role Anonymous/Authenticated; žádné libovolné nároky)

Krok 1: Nastavení zprostředkovatele simulátoru

Nastavte zprostředkovatele ověřování na Simulátor a ujistěte se, že je vývojový režim povolen.

CLI

# Enable development mode
dab configure \
  --runtime.host.mode development

# Set the Simulator provider
dab configure \
  --runtime.host.authentication.provider Simulator

Výsledná konfigurace

{
  "runtime": {
    "host": {
      "mode": "development",
      "authentication": {
        "provider": "Simulator"
      }
    }
  }
}

Poznámka:

Poskytovatel simulátoru funguje pouze, když mode je nastaveno na development. V produkčním režimu DAB odmítne poskytovatele Simulátoru a se nespustí.

Krok 2: Konfigurace oprávnění entity

Definujte oprávnění pro role, které chcete testovat. Můžete otestovat systémové role (Anonymous, Authenticated) a vlastní role.

Příklad: Více rolí

# 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:*"

Výsledná konfigurace

{
  "entities": {
    "Book": {
      "source": "dbo.Books",
      "permissions": [
        {
          "role": "Anonymous",
          "actions": ["read"]
        },
        {
          "role": "Authenticated",
          "actions": ["read"]
        },
        {
          "role": "author",
          "actions": ["create", "read", "update"]
        },
        {
          "role": "admin",
          "actions": ["*"]
        }
      ]
    }
  }
}

Krok 3: Testování různých rolí

Spusťte Tvůrce rozhraní Data API a odešlete požadavky na otestování jednotlivých rolí.

dab start

Testovat jako ověřený (výchozí)

Bez speciálních hlaviček se požadavky vyhodnocují jako Authenticated role:

curl -X GET "http://localhost:5000/api/Book"

Testovat jako anonymní

Použijte hlavičku X-MS-API-ROLE k otestování jako Anonymous:

curl -X GET "http://localhost:5000/api/Book" \
  -H "X-MS-API-ROLE: Anonymous"

Testovat jako vlastní role

Pomocí hlavičky X-MS-API-ROLE otestujte libovolnou vlastní roli:

curl -X GET "http://localhost:5000/api/Book" \
  -H "X-MS-API-ROLE: author"

Poznámka:

U simulátoru funguje vlastní testování rolí, protože DAB vyhodnocuje oprávnění na základě hodnoty hlavičky X-MS-API-ROLE . Systémové role (Anonymous, Authenticated) jsou vždy k dispozici. Pokud požadavek na vlastní roli vrátí hodnotu 403, ověřte, že název role přesně odpovídá oprávněním vaší entity.

Otestujte akci, která má být odepřena

Zkuste akci, pro kterou role nemá oprávnění:

# 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"}'

Očekávaná odpověď: 403 Forbidden

Testovací scénáře

K otestování těchto běžných scénářů použijte simulátor:

Scenario Jak testovat
Anonymní přístup Nastavit X-MS-API-ROLE: Anonymous
Ověřený přístup Vynechejte hlavičky (výchozí) nebo nastavte X-MS-API-ROLE: Authenticated
Vlastní přístup k rolím Nastavit X-MS-API-ROLE: <role-name>
Zamítnutá akce Žádost o akci, pro kterou role nemá oprávnění
Omezení polí Konfigurace oprávnění na úrovni pole a ověření polí odpovědi
Chybějící role Nastavit X-MS-API-ROLE: nonexistent na testování zpracování chyb

Omezení

Poskytovatel simulátoru má tato omezení:

Omezení Řešení problému
Žádné vlastní nároky Použijte zprostředkovatele AppService s hlavičkou X-MS-CLIENT-PRINCIPAL
Žádné zásady databáze s deklaracemi identity Testování zásad pomocí zprostředkovatele AppService
Žádné ověření tokenu Přepnutí na Entra nebo vlastního poskytovatele pro produkci
Pouze režim vývoje Použití skutečného poskytovatele v produkčním prostředí

Návod

Pokud potřebujete otestovat zásady databáze, které používají nároky (například @claims.userId), použijte místo toho poskytovatele AppService. Umožňuje poskytovat vlastní nároky prostřednictvím hlavičky X-MS-CLIENT-PRINCIPAL.

Přechod do produkčního prostředí

Až budete připraveni k nasazení, nahraďte poskytovatele simulátoru produkčním poskytovatelem:

  1. Změnit mode z development na production
  2. Změňte provider z Simulator na vašeho zvoleného poskytovatele (EntraID/AzureAD, AppService, nebo Custom)
  3. Konfigurace požadovaných nastavení JWT (cílová skupina, vystavitel)
{
  "runtime": {
    "host": {
      "mode": "production",
      "authentication": {
        "provider": "EntraID",
        "jwt": {
          "audience": "api://<your-app-id>",
          "issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
        }
      }
    }
  }
}

Příklad dokončení konfigurace

{
  "$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": ["*"]
        }
      ]
    }
  }
}