Megosztás a következőn keresztül:


Helyi hitelesítés a Data API Builderben

Ha a Data API Buildert helyileg vagy a Data API Builder helyszíni futtatásakor fejleszti, tesztelnie kell a konfigurált hitelesítési és engedélyezési beállításokat egy adott szerepkörrel vagy jogcímmel rendelkező kérés szimulálásával.

Ha hitelesítésszolgáltató konfigurálása nélkül szeretne szimulálni egy hitelesített kérést (például Microsoft Entra ID), használhatja a vagy StaticWebApps a Simulator hitelesítésszolgáltatókat:

Simulator A szolgáltató használata

Simulator egy konfigurálható hitelesítési szolgáltató, amely arra utasítja a Data API Builder-motort, hogy az összes kérést hitelesítettként kezelje.

  • Legalább az összes kérés kiértékelése a rendszerszerepkör Authenticatedkontextusában történik.
  • Ha szükséges, a rendszer a http fejlécben szereplő szerepkörök kontextusában értékeli ki a kérést X-MS-API-ROLE .

Megjegyzés

Bár a kívánt szerepkört betartja a rendszer, az adatbázis-szabályzatokat meghatározó engedélyezési engedélyek nem fognak működni, mert a hitelesített felhasználóhoz nem állíthatók be egyéni jogcímek a Simulator szolgáltatónál. Folytassa a Következő szakaszban: A szolgáltató használata StaticWebApps adatbázis-engedélyezési szabályzatok teszteléséhez.

1. A futtatókörnyezet konfigurációs hitelesítési szolgáltatójának frissítése

Győződjön meg arról, hogy a konfigurációs fájlban a hitelesítésszolgáltatót és development a Simulator módot használja. Tekintse meg ezt a mintakonfigurációs host szakaszt:

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

2. Adja meg a kérés szerepkör-környezetét

A Simulator Data API Builder hitelesítési szolgáltatójaként nincs szükség egyéni fejlécre a szerepkör-környezet rendszerszerepkörre Authenticatedvaló beállításához:

curl --request GET \
  --url http://localhost:5000/api/books \

Ha a szerepkörkörnyezetet bármely más szerepkörre szeretné beállítani, beleértve a rendszerszerepkört Anonymousis, a X-MS-API-ROLE fejlécnek szerepelnie kell a kívánt szerepkörben:

curl --request GET \
  --url http://localhost:5000/api/books \
  --header 'X-MS-API-ROLE: author' \

StaticWebApps A szolgáltató használata

A StaticWebApps hitelesítésszolgáltató arra utasítja a Data API Buildert, hogy keressen olyan HTTP-fejléceket, amelyek csak akkor találhatók meg, ha Static Web Apps környezetben futnak. Az ügyfél helyi futtatáskor beállítja ezeket a HTTP-fejléceket egy hitelesített felhasználó szimulálásához, beleértve a szerepkörtagságokat vagy az egyéni jogcímeket is.

Megjegyzés

A HTTP-fejléc ügyfél által biztosított példányai csak helyi fejlesztéskor működnek, X-MS-CLIENT-PRINCIPALmert az éles Azure Static Web Apps környezetek az adott fejléc összes ügyfél által biztosított példányát elvetik.

Győződjön meg arról, hogy a konfigurációs fájlban a hitelesítésszolgáltatót StaticWebApps használja. Tekintse meg ezt a mintakonfigurációs host szakaszt:

"host": {
  "mode": "development",
  "authentication": {
    "provider": "StaticWebApps"
  }
}

1. Generált X-MS-CLIENT-PRINCIPAL fejlécet tartalmazó kérések küldése

Miután a Data API Builder helyileg fut, és konfigurálva van a StaticWebApps hitelesítésszolgáltató használatára, manuálisan létrehozhat egy egyszerű ügyfélobjektumot a következő sablon használatával:

{  
  "identityProvider": "test",
  "userId": "12345",
  "userDetails": "john@contoso.com",
  "userRoles": ["author", "editor"]
}

A statikus webalkalmazás hitelesített felhasználói metaadatai a következő tulajdonságokkal rendelkeznek:

Tulajdonság Leírás
identityProvider Bármilyen sztringérték.
userId A felhasználó egyedi azonosítója.
userDetails A felhasználó felhasználóneve vagy e-mail-címe.
userRoles A felhasználó hozzárendelt szerepköreinek tömbje.

Megjegyzés

Ahogy azt Static Web Apps dokumentációban is említettük, a X-MS-CLIENT-PRINCIPAL fejléc nem tartalmazza a claims tömböt.

Ahhoz, hogy a X-MS-CLIENT-PRINCIPAL fejlécet át lehessen adni, a JSON hasznos adatainak Base64-kódolásúnak kell lenniük. Ehhez bármilyen online vagy offline eszközt használhat. Az egyik ilyen eszköz a DevToys. Egy Base64 kódolású hasznos adatminta, amely a korábban hivatkozott JSON-t jelöli:

eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9

A következő cURL-kérés egy hitelesített felhasználót szimulál, aki lekéri az elérhető Book entitásrekordok listáját a author szerepkör kontextusában:

curl --request GET \
  --url http://localhost:5000/api/books \
  --header 'X-MS-API-ROLE: author' \
  --header 'X-MS-CLIENT-PRINCIPAL: eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9'