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
Authenticated
kontextusá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 Authenticated
való 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 Anonymous
is, 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-PRINCIPAL
mert 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'