Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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:
| 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.jsons 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:
- Změnit
modezdevelopmentnaproduction - Změňte
providerzSimulatorna vašeho zvoleného poskytovatele (EntraID/AzureAD,AppService, neboCustom) - 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": ["*"]
}
]
}
}
}