Szimulátor-hitelesítés konfigurálása helyi teszteléshez

A szimulátorhitelesítési szolgáltató lehetővé teszi a szerepköralapú engedélyek helyi tesztelését identitásszolgáltató konfigurálása nélkül. Használja a fejlesztés során annak ellenőrzéséhez, hogy az engedélyszabályok megfelelően működnek-e az éles környezetben való üzembe helyezés előtt.

Helyi hitelesítésszolgáltató kiválasztása

A fejlesztés során éles környezetben működő identitásszolgáltató konfigurálása nélkül is tesztelheti a hitelesítést és az engedélyezést.

Szolgáltató A következőkre alkalmas Jegyzetek
Szimulátor Gyors engedélytesztelés Csak fejlesztési célokra. Minden kérést hitelesítettként kezel. Alapértelmezett a Authenticated szerepkör, illetve felülírható a X-MS-API-ROLE segítségével.
AppService Jogcímalapú tesztelés Helyileg szimulálja az EasyAuth-ot egyéni jogcímekkel történő X-MS-CLIENT-PRINCIPAL küldéssel. További részletekért lásd: App Service-hitelesítés konfigurálása.

Hitelesítési folyamat

A szimulátorszolgáltató az összes kérést hitelesítettként kezeli, így az engedélyezési szabályok tesztelésére összpontosíthat:

A szimulátor hitelesítési folyamatának illusztrációja, amely bemutatja, hogy a kérelmek hogyan lesznek automatikusan hitelesítve.

Phase Mi történik?
Megérkezik a kérés A fejlesztő HTTP-kérést küld a DAB-nak
Szerep hozzárendelés A DAB hozzárendeli Authenticated (alapértelmezett) vagy a szerepkört a fejlécből X-MS-API-ROLE
Engedélyek ellenőrzése A DAB kiértékeli a kérést az adott szerepkörhöz tartozó entitás engedélyei alapján
Lekérdezés végrehajtása Ha engedélyezve van, a DAB lekérdezi az adatbázist, és visszaadja az eredményeket

Fontos

A szimulátor-szolgáltató csak fejlesztésre használható. Soha ne használja éles környezetben – megkerüli az összes valódi hitelesítést.

Előfeltételek

  • Telepített Data API Builder CLI (telepítési útmutató)
  • Legalább egy entitással rendelkező meglévő dab-config.json

Rövid összefoglalás

Setting Érték
Szolgáltató Simulator
Host üzemmód development (kötelező)
Alapértelmezett szerepkör Authenticated (automatikusan beszúrva)
Szerepkör-felülbírálás fejléce X-MS-API-ROLE
Hozzáférési token szükséges No
Követelések támogatása Korlátozott (csak rendszerszerepkörök Anonymous/Authenticated ; tetszőleges jogcímek nélkül)

1. lépés: A szimulátor-szolgáltató konfigurálása

Állítsa a hitelesítési szolgáltatót szimulátorra, és győződjön meg arról, hogy a fejlesztési mód engedélyezve van.

parancssori felület

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

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

Az eredményként kapott konfiguráció

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

Megjegyzés:

A szimulátorszolgáltató csak akkor működik, ha a mode be van állítva development értékre. Éles módban a DAB elutasítja a szimulátor-szolgáltatót, és nem indul el.

2. lépés: Entitásengedélyek konfigurálása

Adja meg a tesztelni kívánt szerepkörök engedélyeit. Tesztelheti a rendszerszerepköröket (Anonymous, Authenticated) és az egyéni szerepköröket.

Példa: Több szerepkör

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

Az eredményként kapott konfiguráció

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

3. lépés: Különböző szerepkörök tesztelése

Indítsa el a Data API Buildert, és küldjön kéréseket az egyes szerepkörök teszteléséhez.

dab start

Tesztelés hitelesítettként (alapértelmezett)

Speciális fejlécek nélkül a kérések a(z) Authenticated szerepkör szerint lesznek kiértékelve.

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

Tesztelés névtelenként

A X-MS-API-ROLE fejléc használatával teszteljen Anonymous-ként:

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

Egyéni szerepkör tesztelése

A X-MS-API-ROLE fejléc használatával tesztelje bármely egyéni szerepkört:

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

Megjegyzés:

A szimulátorral az egyéni szerepkörtesztelés azért működik, mert a DAB a fejlécérték alapján értékeli ki az X-MS-API-ROLE engedélyeket. A rendszerszerepkörök (Anonymous, Authenticated) mindig elérhetők. Ha egy egyéni szerepkör-kérelem 403-at ad vissza, ellenőrizze, hogy a szerepkör neve pontosan megfelel-e az entitás engedélyeinek.

Megtagadandó művelet tesztelése

Próbálkozzon olyan műveletpel, amelyhez a szerepkör nem rendelkezik engedéllyel:

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

Várt válasz: 403 Forbidden

Tesztelési forgatókönyvek

A szimulátor használatával tesztelje az alábbi gyakori forgatókönyveket:

Scenario A tesztelés menete
Névtelen hozzáférés X-MS-API-ROLE: Anonymous beállítása
Hitelesített hozzáférés Fejlécek kihagyása (alapértelmezett), vagy állítsa be a X-MS-API-ROLE: Authenticated opciót
Egyéni szerepkör-hozzáférés X-MS-API-ROLE: <role-name> beállítása
Megtagadott művelet Olyan művelet kérése, amelyhez a szerepkör nem rendelkezik engedélyekkel
Mezőkorlátozások Mezőszintű engedélyek konfigurálása és válaszmezők ellenőrzése
Hiányzó szerepkör Állítsa be X-MS-API-ROLE: nonexistent a hibakezelés teszteléséhez

Korlátozások

A szimulátor-szolgáltató a következő korlátozásokkal rendelkezik:

Korlátozás Megoldás
Nincsenek személyre szabott jogcímek Az AppService-szolgáltató használata a(z) X-MS-CLIENT-PRINCIPAL fejléccel
Nincsenek jogcímeket tartalmazó adatbázis-irányelvek Szabályzatok tesztelése az AppService-szolgáltató használatával
Token nem kerül érvényesítésre Váltás az Entra vagy egyéni szolgáltatóra éles környezetben
Csak fejlesztési mód Valós szolgáltató használata éles környezetben

Jótanács

Ha a jogcímeket (például) @claims.userIdhasználó adatbázis-szabályzatokat kell tesztelnie, használja inkább az AppService szolgáltatót . Lehetővé teszi, hogy egyéni követeléseket adjon meg a X-MS-CLIENT-PRINCIPAL fejlécen keresztül.

Átállás gyártási környezetbe

Amikor készen áll az üzembe helyezésre, cserélje le a szimulátorszolgáltatót egy termelési szolgáltatóra:

  1. Váltás mode a másikra developmentproduction
  2. Módosítsa provider szolgáltatóját Simulator egy kiválasztott szolgáltatóra (EntraID/AzureAD, AppService, vagy Custom)
  3. A szükséges JWT-beállítások (célközönség, kiállító) konfigurálása
{
  "runtime": {
    "host": {
      "mode": "production",
      "authentication": {
        "provider": "EntraID",
        "jwt": {
          "audience": "api://<your-app-id>",
          "issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
        }
      }
    }
  }
}

Teljes konfigurációs példa

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