Lokale Authentifizierung im Daten-API-Generator
Wenn Sie eine Lösung mithilfe des Daten-API-Generators lokal entwickeln oder den Daten-API-Generator lokal ausführen, müssen Sie die konfigurierten Authentifizierungs- und Autorisierungsoptionen testen, indem Sie eine Anforderung mit einer bestimmten Rolle oder einem bestimmten Anspruch simulieren.
Um eine authentifizierte Anforderung zu simulieren, ohne einen Authentifizierungsanbieter zu konfigurieren (z. B. Microsoft Entra ID), können Sie entweder den Simulator
Authentifizierungsanbieter oder StaticWebApps
verwenden:
Verwenden des Anbieters Simulator
Simulator
ist ein konfigurierbarer Authentifizierungsanbieter, der die Daten-API-Engine anweist, alle Anforderungen als authentifiziert zu behandeln.
- Mindestens werden alle Anforderungen im Kontext der Systemrolle
Authenticated
ausgewertet. - Falls gewünscht, wird die Anforderung im Kontext einer beliebigen Rolle ausgewertet, die
X-MS-API-ROLE
im HTTP-Header angegeben ist.
Hinweis
Während die gewünschte Rolle berücksichtigt wird, funktionieren Autorisierungsberechtigungen, die Datenbankrichtlinien definieren, nicht, da benutzerdefinierte Ansprüche für den authentifizierten Benutzer beim Simulator
Anbieter nicht festgelegt werden können. Fahren Sie mit dem Abschnitt Verwenden des Anbieters zum Testen von StaticWebApps
Datenbankautorisierungsrichtlinien fort.
1. Aktualisieren des Authentifizierungsanbieters für die Laufzeitkonfiguration
Stellen Sie sicher, dass in der Konfigurationsdatei der Authentifizierungsanbieter und development
-Simulator
modus angegeben ist. Weitere Informationen finden Sie in diesem Beispielkonfigurationsabschnitt host
:
"host": {
"mode": "development",
"authentication": {
"provider": "Simulator"
}
}
2. Geben Sie den Rollenkontext der Anforderung an.
Mit Simulator
dem Authentifizierungsanbieter des Daten-API-Generators ist kein benutzerdefinierter Header erforderlich, um den Rollenkontext auf die Systemrolle Authenticated
festzulegen:
curl --request GET \
--url http://localhost:5000/api/books \
Um den Rollenkontext auf eine andere Rolle festzulegen, einschließlich der Systemrolle Anonymous
, muss der X-MS-API-ROLE
Header mit der gewünschten Rolle enthalten sein:
curl --request GET \
--url http://localhost:5000/api/books \
--header 'X-MS-API-ROLE: author' \
Verwenden des Anbieters StaticWebApps
Der StaticWebApps
Authentifizierungsanbieter weist den Daten-API-Generator an, nach einer Gruppe von HTTP-Headern zu suchen, die nur bei der Ausführung in einer Static Web Apps-Umgebung vorhanden sind. Der Client legt diese HTTP-Header fest, wenn sie lokal ausgeführt werden, um einen authentifizierten Benutzer zu simulieren, einschließlich aller Rollenmitgliedschaften oder benutzerdefinierten Ansprüche.
Hinweis
Vom Client bereitgestellte Instanzen des HTTP-Headers funktionieren nur bei der lokalen Entwicklung, X-MS-CLIENT-PRINCIPAL
da produktions- Azure Static Web Apps Umgebungen alle vom Client bereitgestellten Instanzen dieses Headers löschen.
Stellen Sie sicher, dass Sie in der Konfigurationsdatei den StaticWebApps
Authentifizierungsanbieter verwenden. Weitere Informationen finden Sie in diesem Beispielkonfigurationsabschnitt host
:
"host": {
"mode": "development",
"authentication": {
"provider": "StaticWebApps"
}
}
1. Senden von Anforderungen, die einen generierten X-MS-CLIENT-PRINCIPAL
Header bereitstellen
Sobald der Daten-API-Generator lokal ausgeführt und für die Verwendung des StaticWebApps
Authentifizierungsanbieters konfiguriert ist, können Sie ein Clientprinzipalobjekt manuell mit der folgenden Vorlage generieren:
{
"identityProvider": "test",
"userId": "12345",
"userDetails": "john@contoso.com",
"userRoles": ["author", "editor"]
}
Die authentifizierten Benutzermetadaten der statischen Web-App verfügen über die folgenden Eigenschaften:
Eigenschaft | BESCHREIBUNG |
---|---|
identityProvider | Alle Zeichenwerte. |
userId | Ein eindeutiger Bezeichner für den Benutzer. |
userDetails | Der Benutzername oder die E-Mail-Adresse des Benutzers. |
userRoles | Ein Array der zugewiesenen Rollen des Benutzers. |
Hinweis
Wie in Static Web Apps Dokumentation erwähnt, enthält claims
der X-MS-CLIENT-PRINCIPAL
Header das Array nicht.
Um mit dem X-MS-CLIENT-PRINCIPAL
Header übergeben zu werden, muss die JSON-Nutzlast Base64-codiert sein. Dazu können Sie ein beliebiges Online- oder Offlinetool verwenden. Ein solches Tool ist DevToys. Eine Base64-codierte Beispielnutzlast, die den JSON-Code darstellt, auf den zuvor verwiesen wurde:
eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9
Die folgende cURL-Anforderung simuliert einen authentifizierten Benutzer, der die Liste der verfügbaren Book
Entitätsdatensätze im Kontext der author
Rolle abruft:
curl --request GET \
--url http://localhost:5000/api/books \
--header 'X-MS-API-ROLE: author' \
--header 'X-MS-CLIENT-PRINCIPAL: eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9'